# 需要了解的property的用法 class People:def __init__(self,name):self.__name=name@propertydef name(self):return '<name:%s>' %self.__name@name.setterdef name(self,new_name):if type(new_name) is not str:print('名字必须是str类型')returnself.__name=new_name@name.deleterdef name(self):del self.__nameobj=People('egon') #查看 name print(obj.name)obj.name='ok' #修改 name 属性 print(obj.name)del obj.name #删除 name 属性 print(obj.__dict__)
结果:
<name:egon>
<name:ok>
{}
关于property装饰器的使用顺序:
class People:def __init__(self,name):self.__name=namedef xxx_name(self): #查看return '<name:%s>' %self.__namedef yyy_name(self,new_name): #修改if type(new_name) is not str:print('名字必须是str类型')returnself.__name=new_namedef zzz_name(self): #删除del self.__namename=property(xxx_name,yyy_name,zzz_name) #格式命名,固定的顺序(查->改->删)obj=People('egon') print(obj.name)# obj.name=123 # print(obj.name)del obj.name print(obj.__dict__)
如果要在类外面调用类中的隐藏属性就可以使用property