TypeError: Erreur lors de l'appel des bases de métaclasses Une classe de style nouvelle ne peut avoir que des bases classiques
-
12-12-2019 - |
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?
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?