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 相关文章推荐
Django 导出 Excel 代码的实例详解
Aug 11 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
python3之模块psutil系统性能信息使用
May 30 Python
python矩阵转换为一维数组的实例
Jun 05 Python
Python实现爬虫从网络上下载文档的实例代码
Jun 13 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
Jul 03 Python
Pytorch 实现冻结指定卷积层的参数
Jan 06 Python
Python 制作查询商品历史价格的小工具
Oct 20 Python
Django中session进行权限管理的使用
Jul 09 Python
python字典的元素访问实例详解
Jul 21 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中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
js left,right,mid函数
2008/06/10 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
打造自己的jQuery插件入门教程
2016/09/23 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
koa-router源码学习小结
2018/09/07 Javascript
Vue实现移动端左右滑动效果的方法
2018/11/27 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
用Python写冒泡排序代码
2016/04/12 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
python实现俄罗斯方块
2018/06/26 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
shell程序中如何注释
2012/01/28 面试题
学校安全检查制度
2014/01/27 职场文书
安全生产实施方案
2014/02/23 职场文书
秋天的雨教学反思
2014/04/27 职场文书
档案保密承诺书
2014/06/03 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
教师实习自我鉴定总结
2019/08/20 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
python 爬取华为应用市场评论
2021/05/29 Python
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android