【python】@property装饰器
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:55
@propertyFoo.func()Foo.func
class People: def __init__(self, name, age):
self.__name = name
self.__age = age @property
def age(self):
return self.__age @age.setter
def age(self, age):
if isinstance(age, int):
self.__age = age
else:
raise ValueError @age.deleter
def age(self):
print("删除年龄数据!") obj = People("jack", )
print(obj.age)
obj.age =
print("obj.age: ", obj.age)
del obj.age ---------------------------
打印结果: obj.age:
删除年龄数据!
使用方法:
obj = People("jack", )
a = obj.age # 获取值
obj.age = # 重新赋值
del obj.age # 删除属性
将一个方法伪装成为属性后,就不再使用圆括号的调用方式了。而是类似变量的赋值、获取和删除方法了。当然,每个动作内部的代码细节还是需要你自己根据需求去实现的。
那么如何将一个普通的方法转换为一个“伪装”的属性呢?
@property"result = obj.age"@xxx.setter"obj.age = ...."@xxx.delete"del obj.age "
简而言之,就是分别将三个方法定义为对同一个属性的获取、修改和删除。还可以定义只读属性,也就是只定义getter方法,不定义setter方法就是一个只读属性。
property()函数
除了使用装饰器的方式将一个方法伪装成属性外,Python内置的builtins模块中的property()函数,为我们提供了第二种设置类属性的手段。
class People: def __init__(self, name, age):
self.__name = name
self.__age = age def get_age(self):
return self.__age def set_age(self, age):
if isinstance(age, int):
self.__age = age
else:
raise ValueError def del_age(self):
print("删除年龄数据!") # 核心在这句
age = property(get_age, set_age, del_age, "年龄") obj = People("jack", )
print(obj.age)
obj.age =
print("obj.age: ", obj.age)
del obj.age
age = property(get_age, set_age, del_age, "年龄")
property()函数的参数:
实例.属性实例.属性 = XXXdel 实例.属性实例.属性.__doc__
相关文章
-
【Python】极简单的方式序列化sqlalchemy结果集为JSON
【Python】极简单的方式序列化sqlalchemy结果集为JSON
- 互联网
- 2026年04月04日
-
【python】时间戳、字典列表排序
【python】时间戳、字典列表排序
- 互联网
- 2026年04月04日
-
【python】详解numpy库与pandas库axis=0,axis= 1轴的用法
【python】详解numpy库与pandas库axis=0,axis= 1轴的用法
- 互联网
- 2026年04月04日
-
【python cookbook】【数据结构与算法】13.通过公共键对字典列表排序
【python cookbook】【数据结构与算法】13.通过公共键对字典列表排序
- 互联网
- 2026年04月04日
-
【Oracle】数据泵导入导出
【Oracle】数据泵导入导出
- 互联网
- 2026年04月04日
-
【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题
【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题
- 互联网
- 2026年04月04日






