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求pi的方法
Oct 08 Python
Scrapy爬虫实例讲解_校花网
Oct 23 Python
Python实现读取json文件到excel表
Nov 18 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
Python3使用SMTP发送带附件邮件
Jun 16 Python
Python 判断奇数偶数的方法
Dec 20 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
Python tkinter和exe打包的方法
Feb 05 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
Python基础详解之邮件处理
Apr 28 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
完美利用Yii2微信后台开发的系列总结
2016/07/18 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
类似框架的js代码
2006/11/09 Javascript
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
2012/05/30 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
Python基础之函数用法实例详解
2014/09/10 Python
python常用函数详解
2016/09/13 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
匡威英国官网:Converse英国
2018/12/02 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
班级旅游计划书
2014/05/03 职场文书
国旗下的演讲稿
2014/05/08 职场文书
2014年四风个人对照检查及整改措施
2014/10/28 职场文书
初中生考试作弊检讨书
2014/12/14 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL