TypeError: Ошибка при вызове Metaclass Bases Case New-Style не может иметь только классические основы
-
12-12-2019 - |
Вопрос
Коллекция классов, определенных как:
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):
.
Таким образом, вы делаете новый класс стиля.Пустые панцы не имеют никакого чувства, и все же, я продолжаю видеть их на стойке и везде.Почему, о, почему?
Не связан с StackOverflow