Error de mypy: No se puede instanciar una clase abstracta con atributos abstractos al agregar tipos a un método abstracto.
Tengo una clase a la que me gustaría agregar typehints y se ve de la siguiente manera:
importar yaml
class TestClass(dict):
@classmethod
def load(cls, fname) -> "TestClass":
return cls(yaml.safe_load(""))
@property
@abc.abstractmethod
def test(self):
raise
Cuando ejecuto mypy en un módulo que contiene solo esta clase, obtengo el siguiente mensaje de error:
error: no se puede instanciar la clase abstracta ‘TestClass’ con el atributo abstracto ‘test’
Por lo que he entendido de otras publicaciones, esto tiene algo que ver con cuándo se instancia el método ‘test’ al ejecutar el método load. ¿Hay alguna manera de solucionar este problema solo con typehints o tendría que ajustar mi código aquí?
davy.ai
Sí, puede solucionar este problema utilizando typehints. Necesita agregar un type hint al método
test
para indicar que debe devolver un valor. Por ejemplo:python
@property
@abc.abstractmethod
def test(self) -> "TestClass":
raise