property这个属性是一个装饰器,我们通常可以用它使我们类中的方法调用的时候不需要括号,使得一些类似name的属性可以以obj.name来调用,给用户更好的体验,话不多说,上代码
property的基本使用
class Room:
def __init__(self,name,age,width,height):
self.name = name
self.age = age
self.__width = width
self.__height =height
@property#使调用时不用括号,看起来像是属性
def show_area(self):
return self.__height * self.__width
r1 = Room('alex','22',10,10)
print(r1.show_area)
#r如果要扩展,就可以在析构函数中加入一个高 ,在show中加入一个参数,就可以求出体积 而且没有改变调用接口
class Name:
def __init__(self,name):
self.__name = name
@property
def name(self):
return self.__name
@name.setter
def name(self,val):
self.__name = val
@name.deleter
def name(self):
print('无法删除')
del self.__name
print('删除成功!')
m1 = Name('Marvelous')
m1.name = '周栩强'
print(m1.name)
del m1.name
我们的显示结果如下:
周栩强
无法删除
删除成功!