property装饰器
# 需要了解的property的用法 class People: def __init__(self,name): self.__name=name @property def name(self): return '<name:%s>' %self.__name @name.setter def name(self,new_name): if type(new_name) is not str: print('名字必须是str类型') return self.__name=new_name @name.deleter def name(self): del self.__name obj=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=name def xxx_name(self): #查看 return '<name:%s>' %self.__name def yyy_name(self,new_name): #修改 if type(new_name) is not str: print('名字必须是str类型') return self.__name=new_name def zzz_name(self): #删除 del self.__name name=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