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版
Dec 07 Python
Python求导数的方法
May 09 Python
Linux系统上Nginx+Python的web.py与Django框架环境
Dec 25 Python
利用Python如何生成随机密码
Apr 20 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
python机器人行走步数问题的解决
Jan 29 Python
详解python读取和输出到txt
Mar 29 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
Python3基本输入与输出操作实例分析
Feb 14 Python
python使用html2text库实现从HTML转markdown的方法详解
Feb 21 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
Python通过format函数格式化显示值
Oct 17 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递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
php格式文件打开的四种方法
2018/02/24 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
[00:59]DOTA2荣耀之路1:Doom is back!weapon X!
2018/05/22 DOTA
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
Python表示矩阵的方法分析
2017/05/26 Python
Python set常用操作函数集锦
2017/11/15 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
北京鼎普科技股份有限公司软件测试面试题
2012/04/07 面试题
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
给孩子的新年寄语
2014/04/08 职场文书
村容村貌整治方案
2014/05/21 职场文书
医院合作协议书
2014/08/19 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
python正则表达式re.search()的基本使用教程
2021/05/21 Python
如何利用React实现图片识别App
2022/02/18 Javascript