es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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í?

Tags:  , ,

Answer

  1. Avatar for 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

Comments are closed.