Python通过属性手段实现只允许调用一次的示例讲解
2018-04-21 09:16
751 查看
如果希望一个对象的某个方法只能够调用一次,按照我之前的惯性思维,我肯定是定义一个状态量然后每次调用的时候修改它的值。通过查看状态量的数值,我可以决定采取执行不同的处理。
其实,除此之外还有一种方法,不仅仅能够实现这样的处理,还能够顺便处理对象的属性。
先看一下如下的代码:
class DemoClass: def __init__(self): pass def AttrCheck(self): try: self.value print("already hasvalue") raise ValueAttrError except AttributeError: self.value = 0 print(self.value) obj = DemoClass() obj.AttrCheck() obj.AttrCheck()
程序执行结果如下:
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python attr1.py already has value Traceback (mostrecent call last): File "attr1.py", line 15, in<module> obj.AttrCheck() File "attr1.py", line 8, inAttrCheck raiseRuntimeError("multi-excued!") RuntimeError:multi-excued!
从上面的结果看,我们所描述到的功能已经这样实现了!
上面的属性是给了默认的赋值,我们当然也可以改成带有赋值数值的形式:
class DemoClass: def __init__(self): pass def AttrCheck(self,value): try: self.value print("already hasvalue") raiseRuntimeError("multi-excued!") except AttributeError: self.value = value print(self.value) obj = DemoClass() obj.AttrCheck(123) obj.AttrCheck(123)
程序的执行结果如下:
grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python attr1.py 123 already has value Traceback (mostrecent call last): File "attr1.py", line 15, in<module> obj.AttrCheck(123) File "attr1.py", line 8, in AttrCheck raiseRuntimeError("multi-excued!") RuntimeError:multi-excued!
以上这篇Python通过属性手段实现只允许调用一次的示例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- Python通过属性手段实现只允许调用一次的方法
- python 通过字符串调用对象属性或方法的实例讲解
- Python 实现异步调用函数的示例讲解
- Python通过调用有道翻译api实现翻译功能示例
- Python通过调用mysql存储过程实现更新数据功能示例
- python调用外部子进程,通过管道实现异步标准输入和输出
- Android编程,通过ContentResolver调用系统URI实现的通讯录示例
- JS通过调用微信API实现微信支付功能的方法示例
- Python实现类似jQuery使用中的链式调用的示例
- python调用外部子进程,通过管道实现异步标准输入和输出的交互
- python(通过flask实现一个http接口)调用这个接口实现第三方smtp发送邮件
- python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
- python中的__new__方法与__init__方法区别与调用;通过使用__new__实现单例模式
- 通过DLL路径,实现动态调用动态链接库中指定类的(静态)方法和属性
- Python实现购物系统(示例讲解)
- 通过python调用adb命令实现用元素名称、id、class定位元素
- java工具类1---一般是通过静态函数实现某个功能,而不需要涉及类的任何属性和变量,直接类名调用
- python调用外部子进程,通过管道实现异步标准输入和输出的交互
- python调用HTMLTestRunner+unittest实现一次执行多个测试类,并生成与每个测试类对应的测试报告,并不像某些人写的每次只执行一个测试类,具体看代码,附上整个project代码
- python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件