TypeError: Erreur lors de l'appel des bases de métaclasses Une classe de style nouvelle ne peut avoir que des bases classiques

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

Question

une collection de classes définies comme:

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')

Lorsque vous exécutez, donne cette erreur:

TypeError: Error when calling the metaclass bases
    a new-style class can't have only classic bases

J'ai besoin de la métaclasse (je pense) d'avoir une représentation de chaîne connue de B dans mon code.La raison pour laquelle cela est à côté du point, mais cela aidera grandement avec les futures mises à jour.

si supposant que j'ai besoin de C comme la métaclasse de B et B sera une sous-classe d'une personne peut me dire ce qui se passe mal ici et comment je pourrais changer ce que je fais pour supprimer l'erreur?

Était-ce utile?

La solution

Le problème est la ligne

class A():

Il devrait être:

class A(object):

De cette façon, vous faites une nouvelle classe de style.Les parens vides n'ont aucun sens, et toujours, je continue de les voir sur Stackoverflow et partout.Pourquoi, oh pourquoi?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top