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中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
不要用强制方法杀掉python线程
Feb 26 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
浅析Python与Mongodb数据库之间的操作方法
Jul 01 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
Python 根据数据模板创建shapefile的实现
Nov 26 Python
centos7中安装python3.6.4的教程
Dec 11 Python
如何基于python实现归一化处理
Jan 20 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
Mar 14 Python
python实现PDF中表格转化为Excel的方法
Jun 16 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判断字符以及字符串的包含方法属性
2008/08/30 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
node.js 抓取代理ip实例代码
2017/04/30 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
js实现图片实时时钟
2020/01/15 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
python实现一个简单的ping工具方法
2019/01/31 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
python自定义时钟类、定时任务类
2021/02/22 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
django rest framework serializer返回时间自动格式化方法
2020/03/31 Python
python GUI模拟实现计算器
2020/06/22 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
甜品店的创业计划书范文
2014/01/02 职场文书
节约用水演讲稿
2014/05/21 职场文书
创文明城市标语
2014/06/16 职场文书
11.9消防日宣传标语
2014/10/08 职场文书
厉行节约工作总结
2015/08/12 职场文书