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数据结构之二叉树的遍历实例
Apr 29 Python
Python脚本实现集群检测和管理功能
Mar 06 Python
用Python抢过年的火车票附源码
Dec 07 Python
python基于隐马尔可夫模型实现中文拼音输入
Apr 01 Python
Python3.5运算符操作实例详解
Apr 25 Python
Python中bisect的使用方法
Dec 31 Python
Pytorch的mean和std调查实例
Jan 02 Python
Python爬虫实现模拟点击动态页面
Mar 05 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
Python run()函数和start()函数的比较和差别介绍
May 03 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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
Windows下的PHP安装pear教程
2014/10/24 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
认识延迟时间为0的setTimeout
2008/05/16 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
jquery validate 自定义验证方法介绍 日期验证
2014/02/27 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python 模板引擎的注入问题分析
2017/01/01 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
优秀士兵先进事迹
2014/02/06 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
投资入股合作协议书
2014/10/28 职场文书
委托证明范本
2014/11/25 职场文书
优秀党员个人总结
2015/02/14 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
「Manga Time Kirara MAX」2022年5月号封面公开
2022/03/21 日漫
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB
Python find()、rfind()方法及作用
2022/12/24 Python