Python通过属性手段实现只允许调用一次的示例讲解


Posted in Python onApril 21, 2018

如果希望一个对象的某个方法只能够调用一次,按照我之前的惯性思维,我肯定是定义一个状态量然后每次调用的时候修改它的值。通过查看状态量的数值,我可以决定采取执行不同的处理。

其实,除此之外还有一种方法,不仅仅能够实现这样的处理,还能够顺便处理对象的属性。

先看一下如下的代码:

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
0
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实现apahce网站日志分析示例
Apr 02 Python
Python实现一个转存纯真IP数据库的脚本分享
May 21 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
python numpy实现文件存取的示例代码
May 26 Python
Python+PyQT5的子线程更新UI界面的实例
Jun 14 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
解决python中import文件夹下面py文件报错问题
Jun 01 Python
Python实现数字的格式化输出
Aug 01 Python
linux中nohup和后台运行进程查看及终止
Jun 24 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 #Python
使用pandas读取csv文件的指定列方法
Apr 21 #Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 #Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 #Python
对pandas进行数据预处理的实例讲解
Apr 20 #Python
pandas 两列时间相减换算为秒的方法
Apr 20 #Python
详谈pandas中agg函数和apply函数的区别
Apr 20 #Python
You might like
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
php批量删除操作代码分享
2017/02/26 PHP
日期 时间js控件
2009/05/07 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
javascript实现的HashMap类代码
2014/06/27 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
python的迭代器与生成器实例详解
2014/07/16 Python
浅谈Python使用Bottle来提供一个简单的web服务
2017/12/27 Python
Python求解任意闭区间的所有素数
2018/06/10 Python
Python基于WordCloud制作词云图
2019/11/29 Python
python中数据库like模糊查询方式
2020/03/02 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
水果花束:Fruit Bouquets
2017/12/20 全球购物
高三政治教学反思
2014/02/06 职场文书
2014年环卫工作总结
2014/11/22 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
爱的教育观后感
2015/06/17 职场文书
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers
python绘制云雨图raincloud plot
2022/08/05 Python