TypeError: Ошибка при вызове Metaclass Bases Case New-Style не может иметь только классические основы

StackOverflow https://stackoverflow.com//questions/9677163

Вопрос

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

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, будет подклассом, который кто-то может сказать мне, что здесь не так и как я могу изменить то, что я делаю, чтобы удалить ошибку?

Это было полезно?

Решение

Проблема в линии

class A():
.

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

class A(object):
.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top