TypeError: Ошибка при вызове баз метакласса класс нового стиля не может иметь только классические базы

Коллекция классов, определенных как:

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

Мне нужен метакласс (я думаю), чтобы иметь известное строковое представление B в моем коде. Причина в том, что это не так, но это очень поможет в будущих обновлениях.

Итак, предполагая, что мне нужен C, чтобы метакласс B и B был подклассом A, может кто-нибудь сказать мне, что здесь не так, и как я могу изменить то, что я делаю, чтобы удалить ошибку?

Ответ 1

Проблема заключается в строке

class A():

Это должно быть:

class A(object):

Таким образом, вы делаете A новым классом стиля. Пустые парнеры не имеют никакого смысла, и все же я все время вижу их в stackoverflow и везде. Почему, о почему?