TypeError: Error al llamar a las bases de Metaclass, una clase de estilo nuevo no puede tener solo bases clásicas

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

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.

¿Fue útil?

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
scroll top