0

내가 가지고있는 following script :내 메타 클래스에서 클래스의 부모 클래스를 얻는 방법?

#!/usr/bin/python3 

class MyMeta(type): 
    def __new__(mcs, name, bases, dct): 
     print(name + " " + str(bases)) 
     return super(MyMeta, mcs).__new__(mcs, name, bases, dct) 


class A(metaclass=MyMeta): 
    def foo(self): 
     pass 


class B(A): 
    pass 


class C(B): 
    def foo(self): 
     pass 


def main(): 
    pass 


if __name__ == "__main__": 
    main() 

나는 다음과 같은 출력을 얻을 :

A() 
B (<class '__main__.A'>,) 
C (<class '__main__.B'>,) 

을하지만 그것을 기대 :

A() 
B (<class '__main__.A'>,) 
C (<class '__main__.B'>, <class '__main__.A'>) 

내가 실수 할 어디?

답변

1

bases 매개 변수는 클래스 정의에 나열된 기본 클래스를 나열합니다. 대답과 설명은

class MyMeta(type): 
    def __new__(mcs, name, bases, dct): 
     ret = super(MyMeta, mcs).__new__(mcs, name, bases, dct) 
     print(name + " " + str(ret.mro()[1:-1])) 
     return ret 
+0

감사합니다 : 당신이 class.mro을 원하는처럼

는 것 같습니다. – Denis