2012-03-13 8 views
10

zbiór klas zdefiniowane jako:TypeError: Błąd podczas wywoływania bazy metaklasa klasa nowy styl nie może mieć tylko klasycznych baz

class A(): 
    @staticmethod 
    def call(): 
     print('a') 

class C(type): 
    def __repr__(self): 
     return 'somename' 

class B(A): 
    __metaclass__ = C 

    @staticmethod 
    def call(): 
     print('b') 

    def boundcall(self): 
     print('bound') 

Po uruchomieniu daje ten błąd:

TypeError: Error when calling the metaclass bases 
    a new-style class can't have only classic bases 

Potrzebuję metaclass (myślę), aby mieć znaną ciąg znaków B w moim kodzie. Powód, dla którego jest to nie na temat, ale bardzo pomoże w przyszłych aktualizacjach.

Zakładając, że potrzebuję C, aby był metaclass B, a B będzie podklasą A, czy ktoś może mi powiedzieć, co tu idzie nie tak i jak mogę zmienić to, co robię, aby usunąć błąd?

Odpowiedz

16

Problemem jest linia

class A(): 

Powinno być:

class A(object): 

ten sposób zrobisz nowa klasa styl. Puste pareny nie mają żadnego sensu, a mimo to widzę je na stackoverflow i wszędzie. Dlaczego oh dlaczego?

Powiązane problemy