动态将描述符添加到类

时间:2020-03-25 13:01:11

标签: python python-3.x

我有一类具有很多属性的类,为了降低复杂度,我试图通过动态创建它们来重写它。我尝试了以下方法:

class D_test: 
    def __get__(self, obj = None, obj_type= None): 
        print (f'{self} yeah!!') 
    def __set__(self, obj, value): 
        print (f'{self} {obj} {value}') 

class Blagh:
    pass

setattr(Blagh, 'test', D_test)

x = Blagh()

x.test

In [18]: x.test                                                                 
Out[18]: __main__.D_test


我的理解是,以上内容应调用描述符的__get__。我要去哪里错了?

1 个答案:

答案 0 :(得分:2)

您需要创建描述符的实例,否则只需将描述符类附加到Blagh

setattr(Blagh, 'test', D_test())