나는 믹서를 데코레이터가있는 클래스에 주입하려고합니다. 코드가 실행될 때 클래스에 더 이상 dict 속성이 없습니다 (인스턴스 (dir)에 인스턴스가 있음). 나는 부동산이 어디에서 사라지고 있는지 모르겠습니다. dict을 얻거나 그렇지 않으면 인스턴스의 속성을 찾을 수있는 방법이 있습니까?믹스 인 주사 후 __dict__을 잃는 파이썬 객체
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