欢迎访问个人博客http://www.jkraise.top
property 属性
## 定义 ###############
class Foo:
def func(self):
print('func')
# 定义property属性 @property
def prop(self):
print('prop')
return 'prop 返回'
# ############### 调用 ###############
foo_obj = Foo()
foo_obj.func() # 调用实例方法
re = foo_obj.prop # 调用property属性
print(re)
注意点:
- 定义时, 在实例方法的基础上添加@property 装饰器; 并且只有self,参数,
- 调用时, 无需括号
方法二
class Goods:
"""python3中默认继承object类
以python2、3执行此程序的结果不同,因为只有在python3中才有@xxx.setter @xxx.deleter
"""
@property
def price(self):
print('@property')
return '1000'
@price.setter
def price(self, value):
print('@price.setter')
@price.deleter
def price(self):
print('@price.deleter')
obj = Goods()
print(obj.price) # 自动执行 @property 修饰的 price 方法,并获取方法的返回值
obj.price = 123 # 自动执行 @price.setter 修饰的 price 方法,并将 123 赋值给方法的参数del obj.price # 自动执行 @price.deleter 修饰的 price 方法
方法三
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def get_age(self):
return self.age
def set_age(self, value):
if isinstance(value, int):
self.age = value
else:
print("error: 不是整数类型")
def del_age(self):
print("删除这个属性", self.age)
# 定义一个属性,当对这个age设置值时调用set_age,当获取值时调用get_age
age = property(get_age, set_age, del_age, "文档说明")
p = Person("夏明", 12)
print(p.age)
p.age = 14
print(p.age)
del P.age
# 获取描述
desc = Person.age.__doc__