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

  我们的显示结果如下:

周栩强
无法删除
删除成功!

  

 

posted @ 2018-10-08 00:48  Recklessz  阅读(184)  评论(0编辑  收藏  举报