Erro de tipo:Erro ao chamar as bases da metaclasse, uma classe de novo estilo não pode ter apenas bases clássicas
-
12-12-2019 - |
Pergunta
Uma coleção de classes 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')
Quando executado, dá este erro:
TypeError: Error when calling the metaclass bases
a new-style class can't have only classic bases
Preciso que a metaclasse (eu acho) tenha uma representação de string conhecida de B em meu código.A razão para isso não vem ao caso, mas ajudará muito em atualizações futuras.
Então, supondo que eu precise que C seja a metaclasse de B e B será uma subclasse de A, alguém pode me dizer o que está errado aqui e como posso mudar o que estou fazendo para remover o erro?
Solução
O problema é a linha
class A():
Deveria ser:
class A(object):
Dessa forma, você faz de A uma nova classe de estilo.Os parênteses vazios não fazem sentido algum e, ainda assim, continuo vendo-os no stackoverflow e em todos os lugares.Por que oh por que?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow