python3 之property
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 提示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探