面向对象知识补充 -- property

property 的 设置值方法

class Person(object):

    def __init__(self,name,age):
        self.name = name
        self.age = age


    # @property
    # def say_hi(self):
    #     return '{self.name} {self.age}'.format(self=self)
    #
    #
    # @say_hi.setter
    # def say_hi(self,value):
    #     print('给property包装的属性方法 设置值的时候执行我的方法')
    #     self.name = value

            
    def _get_say_hi(self):
        return '{self.name} {self.age}'.format(self=self)

    def _set_say_hi(self, value):
        print('给property包装的属性方法 设置值的时候执行我的方法')
        self.name = value

    say_hi = property(_get_say_hi, _set_say_hi)



if __name__ == '__main__':
    p1 = Person('张三',19)
    ret = p1.say_hi
    print(ret)

    p1.name = '李四'   #普通的属性是可以修改的

    # property包装的方法 不可以直接修改 需要定义 setter方法

    p1.say_hi = '王五'
    ret2 = p1.say_hi
    print(ret2)
    print(p1.name)

 

posted @ 2019-01-16 19:29  一路向北_听风  阅读(153)  评论(0)    收藏  举报