Python descriptor

class A:
    def __init__(self, name):
        self.name = name

    def __get__(self, ins, cls):
        print(‘call get‘)
        if ins is None:
            return self
        return ins.__dict__[self.name]

    def __set__(self, ins, val):
        print(‘call set‘)
        ins.__dict__[self.name] = val

    def __delete__(self, ins):
        print(‘cal del‘)
        del ins.__dict__[self.name]

class B:
    a1 = A(‘a1‘)

    def __init__(self):
        self.a1 = 3

#b=B.__new__(B)
b=B()
b.a1
#B.a1
    

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。