python之面向对象之property
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
我们的显示结果如下:
周栩强 无法删除 删除成功!