直接看例子,如下定义了3个变量:
2个私有实例变量:__name,__age
1个非私有实例变量:country
class Test: def __init__(self, name, age, country): self.__name = name self.__age = age self.country = country def test_1(self): print("this is test1")
我们实例话一个对象,并尝试对其变量进行查看和修改:
class Test: def __init__(self, name, age, country): self.__name = name self.__age = age self.country = country @property def age(self): return self.__age @age.setter def age(self, new_age): self.__age = new_age def test_1(self): print("this is test1")
然后,我们继续尝试对变量进行查看和修改:
我们可以看到,现在是可以对age这个私有属性进行获取和修改的了。运行结果如下:
18 19
@property的实现比较复杂,我们就先直接学习如何用:
1、@property装饰一个方法,方法名和属性名相同(不要__),被装饰的方法返回私有属性。
2、当实用@property后,自动生成一个@属性名.setter的装饰器,可用其装饰一个修改私有属性的方法。
我们可以看到,__name和__age这两个私有实例变量,是无法直接访问的。
那我们可以如何直接访问了,这里就需要用到@property装饰器了