2012-03-13 2 views
10

として定義されたクラスのコレクションを持つことはできません。はTypeError:メタクラスの拠点を呼び出すときにエラーが新しいスタイルのクラスは唯一の古典的な拠点

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

実行
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') 

、このエラーが発生します

私はコード内にBの文字列表現を持つためにメタクラスが必要です。その理由は、それがポイントの横にあるが、それは将来の更新で大きく役立つだろう。

BのメタクラスにCが必要であると仮定すると、BはAのサブクラスになります。誰かがここで何が間違っているのか、私はエラーを取り除くために何をしているのかを教えてくれますか?

答えて

16

問題は、それがあるべきライン

class A(): 

です:

class A(object): 

そのように、あなたは新しいスタイルのクラスを作ります。空の括約は何の意味もなく、まだ、私はスタックオーバーフローやどこでも見ています。なぜ、ああ、なぜ?

関連する問題