TypeError: Error al llamar a las bases de Metaclass, una clase de estilo nuevo no puede tener solo bases clásicas
-
12-12-2019 - |
Pregunta
Una colección de clases definidas como:
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')
cuando se ejecuta, da este error:
TypeError: Error when calling the metaclass bases
a new-style class can't have only classic bases
Necesito el metaclase (creo) para tener una representación de cadena conocida de B en mi código.La razón para tener eso está al lado del punto, pero lo ayudará enormemente con futuras actualizaciones.
Suponiendo que necesito que C para ser la metacasa de B y B será una subclase de una persona que alguien me diga lo que se está equivocado aquí y cómo podría cambiar lo que estoy haciendo para eliminar el error.
Solución
El problema es la línea
class A():
debería ser:
class A(object):
De esa manera, haces una nueva clase de estilo.Los parentes vacíos no tienen sentido en absoluto, y aún así, sigo viéndolos en StackOverflow y en todas partes.¿Por qué, oh por qué?
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow