property装饰器

时间:2023-03-10 00:48:03
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