我有一类具有很多属性的类,为了降低复杂度,我试图通过动态创建它们来重写它。我尝试了以下方法:
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__
。我要去哪里错了?
答案 0 :(得分:2)
您需要创建描述符的实例,否则只需将描述符类附加到Blagh
:
setattr(Blagh, 'test', D_test())