Property(属性)
一、定义
一个可以使实例方法用起来像实例属性一样的特殊关键字,可以对某个方法,通过使用property属性,能够简化调用者在获取数据的流程,使代码看起来更简明。
使用property装饰的方法在调用时,和属性的调用一样,不需要括号。该方法的定义仅有一个self参数。
实现property有2种方式:装饰器、类属性
二、装饰器
新式类中的属性有三种访问方式:
- 读取属性
- 修改属性
- 删除属性
Class Student: #读取属性 @property def score(self): return self._score #setter方法修改属性 @score.setter def score(self, value): self._score = value #删除属性 @score.deleter def score(self): del self._score ########## Usage ####### stu = Student() stu.score #调用方法名,作为属性 stu.score = 100 del stu.score
三、类属性
当使用类属性的方式创建property属性时,property()方法有四个参数
- 参数1. 方法名,调用对象.属性时自动触发
- 参数2. 方法名,调用 对象.属性 = xxx 时自动触发执行方法
- 参数3. 方法名,调用 del 对象.属性 时自动触发执行方法
- 参数4. 字符串,调用 对象.属性.doc ,此参数是该属性的描述信息
1 ######################### 2 Class Student2: 3 def __init__(self): 4 self.score = 100 5 self.factor = 0.6 6 7 def get_score(self): 8 new_score = self.score * self.factor 9 return new_score 10 11 def set_score(self, value): 12 self.score = value 13 14 def del_score(self): 15 del self.score 16 17 score = property(get_score, set_score, del_score, '''This is description of score''') 18 19 ########## Usage ####### 20 stu = Student() 21 stu.score #调用方法名,作为属性 22 stu.score = 100 23 del stu.score
四、使用property取代getter和setter方法
1 ##################################### 2 Class Money: 3 def __init__(self): 4 self.__money = 0 5 6 # 使用装饰器对money进行装饰,添加一个叫money的属性,调用装饰方法 7 @property 8 def money(self): 9 return self.__money 10 11 @money.setter 12 def money(self, value): 13 if isinstance(value, int): 14 self.__money = value 15 else: 16 print("Invalid type: value is not int") 17 18 ####### Usage ####### 19 a = Money() 20 a.money = 100 21 print(a.money)
参考链接:
1. http://www.zzvips.com/article/171641.html
2.Python 提示
原文地址:http://www.cnblogs.com/charles-garden/p/16811290.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性