2011-04-26 7 views
2

모든 클래스 상속의 사전을 만들 수있는 방법이 있습니까? 무엇이 잘못 되었나요클래스 하위 클래스 사전

{'A': <class '__main__.A'>, 'B': <class '__main__.B'>} 
+0

class Meta(type): def __new__(cls, name, bases, dict_): new_class = type.__new__(cls, name, bases, dict_) new_class._derived = {} if isinstance(bases[0], Meta): bases[0]._derived[name] = new_class return new_class class Magic(object): __metaclass__ = Meta class A(Magic): pass class B(Magic): pass print Magic._derived 

인쇄 :

뭔가 여기

class MagikClass : pass class A(MagikClass) : __name__ = "A" print magik_dict # -> { "A": A } 

+0

@ S.Lott 문제의 명백한 확장을 위해 작동하지 않을 것이다 :'종류 B (A) :'. 또한, 파이썬 프로그램의 다른 부분이이 정보로 작업하는 경우 하위 프로세스와 구문 분석을 사용하여 정보를 수집해야하는데, 이는 아래의 솔루션만큼 우아하지 않습니다. –

답변

4

같은 파생 클래스의 클래스를 포함, 각 클래스에 속성 _derived을 추가하는 솔루션입니다 grep? `grep '클래스. * MagikClass'* .py`는 완벽하게 작동하는 것처럼 보입니다.
+0

답변 해 주셔서 감사합니다 (: – uhbif19