类的集合定义为:

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')
.

运行时,给出此错误:

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

我需要MetaClass(我认为)在我的代码中拥有B的已知字符串表示。在这一点旁边的理由,但它会有很大帮助未来的更新。

所以假设我需要c要成为b的metaclass,b将是一个人的子类,有人告诉我这里发生了什么问题以及如何改变我正在做的事情来删除错误?

有帮助吗?

解决方案

问题是线

class A():
.

应该是:

class A(object):
.

那样,你制作一个新的风格课程。空的镜子毫无意义,仍然是,我一直在SpackOverflow和各地看到它们。为什么,为什么?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top