2
respostas

Como usar type hints em uma classe que alguns atributos não estão no contrutor.

Por exemplo, tenho uma classe de Declarative Base do SqlAlchemy, ela é uma classe model de banco de dados. Gostaria de utilizar do recurso de type hints para evitar erros na hora de programar. Como posso fazer? Esse é um exemplo de uma classe de declarative base:

class Sexo(Base):
    __table_args__ = {'schema': 'public'}
    __tablename__ = 'Sexo'

    identificador = Column(Integer, primary_key=True)
    descricao = Column(String, nullable=False)
    sigla = Column(String, nullable=False)
    ativo = Column(Boolean, nullable=False)
2 respostas

Oii Hudson, como você está?

Sinto muito pela demora em obter um retorno.

O uso do type hint por si só não garante que o código irá lançar algum erro caso não receba o argumento definido na tipagem, tá bom? Por exemplo:

nome: str = 12
print(nome)

No trecho acima eu defino que a variável "nome" receberá um tipo "str", porém, se armazenarmos um tipo inteiro nenhum erro será lançado. O type hint é apenas uma dica do que aquela variável espera receber, tornando assim o código mais legível.

No caso que você mostrou, algo que pode fazer para deixar o código legível é partir para seguinte abordagem:

variavel: tipo_que_ela_espera_receber =  Column(Integer, primary_key=True)
class Sexo(Base):
    __table_args__: dict = {'schema': 'public'}
    __tablename__: str = 'Sexo'

    identificador: int = Column(Integer, primary_key=True)
    descricao: str = Column(String, nullable=False)
    sigla: str = Column(String, nullable=False)
    ativo: bool = Column(Boolean, nullable=False)

Qualquer dúvida estou por aqui, tá bom? A gente vai conversando.

Abraços!

Muitíssimo obrigado pela dica, eu li alguns artigos que reforçavam o que você acabou de me explicar.