python还提供了@property装饰器,可以使用对象名.属性的方法操作类属性,也保护了类的封装性。可以把方法名伪装成属性调用,方法名后面不需要加小括号
class Fruit:
def __init__(self, fruit):
self.__fruit = fruit
# 修饰fruit()方法,使该方法变成fruit属性的getter方法,可以获得属性
# 如果类中只包含该方法,那么fruit属性将是一个只读属性,不能对属性做修改
@property
def fruit(self):
return self.__fruit
# 要想修改fruit属性,还需要添加setter方法,使用以下装饰器
@fruit.setter
def fruit(self, value):
self.__fruit = value
# 要想删除fruit属性,使用deleter装饰器
@fruit.deleter
def fruit(self):
self.__fruit = "属性已删除"
f1 = Fruit('苹果')
# 获取属性
print(f1.fruit)
#修改属性
f1.fruit = "香蕉"
print(f1.fruit)