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