@property

  • 掌握@property的两个要点
    • 将方法伪装成属性
class C:

    @property
    def f1(self):
        return 1

obj = C()

#f1在类中是方法,却和调用属性的写法一样
obj.f1
    • 调用的对应关系
class C:

    @property
    def f1(self):
        print(1)

    @f1.setter
    def f1(self, val):
        print(val)

    @f1.deleter
    def f1(self):
        print('del')

obj = C()
obj.f1     #调用第一个方法
obj.f1 = 2 #调用第二个方法
del obj.f1 #调用第三个方法

扩展: property()的使用

class C:
    def _get(self):
        print('get')

    def _set(self, v):
        print(v)

    prop = property(_get, _set)

obj = C()
obj.prop    #调用_get方法
obj.prop = 'set'    #调用_set方法
原文地址:https://www.cnblogs.com/dongmengze/p/9508933.html