1
我试图注入一个mixin与一装饰类后失去__dict__。当代码运行该类已不再具有即使目录(实例)说,它有一个字典财产。我不确定房屋在哪里消失。有没有一种方法,我可以得到字典或以其他方式找到实例的属性?Python对象混入注射
def testDecorator(cls):
return type(cls.__name__, (Mixin,) + cls.__bases__, dict(cls.__dict__))
class Mixin:
pass
@testDecorator
class dummyClass:
def __init__(self):
self.testVar1 = 'test'
self.testVar2 = 3.14
inst = dummyClass()
print(dir(inst))
print(inst.__dict__)
如果装饰被注释掉但此代码导致错误时,装饰是存在的。运行在蟒蛇3.5.1
只需切除'从传递给'type'映射__dict__'也可以(一个新的'__dict__'描述符是自动创建的)。也许删除'__weakref__'也是一个好主意。 – BrenBarn
好了,'Mixin'都有自己的'__dict__'描述符,所以它使用一个,而不是创建一个新的,但是,是消除结束了'__dict__'应该工作。 – user2357112