Coletânea Python do ZERO às Redes Neurais Artificiais

Fernando Feltrin · Capítulo 182 de 287

Páginas do PDF

Coletânea Python do ZERO às Redes Neurais Artificiais

Métodos estáticos

Logo que iniciamos nossos estudos em orientação a objetos nos é passado, além é claro da sintaxe, algumas estruturas bastante engessadas para que possamos criar nossos objetos de forma que os mesmos sempre estejam atrelados a métodos e atributos de classe.

Porém, a partir do momento que começamos a ver nossas classes como

uma estrutura “molde” para outras estruturas de objetos, começamos a entender que praticamente tudo o que se é permitido fazer na programação estruturada é permitido fazer na orientada a objetos.

Falando especificamente de nossos métodos de classe, por padrão temos

o costume de já criá-los atrelados a um objeto ou de forma a ser instanciado tanto dentro quanto fora de nossa classe.

Mas, nesse cenário acabamos por esquecer que um método de classe, assim como uma função comum, pode ser totalmente independente, sendo chamada arbitrariamente apenas quando necessário.

Em outras palavras, um método estático funciona como uma função normal dentro de uma classe, independente, podendo ser utilizada (inclusive recursivamente) sem que a mesma seja instanciada para a classe ou por algum objeto da mesma.

Nessa linha de raciocínio, diferentemente de um método de classe convencional que normalmente opera em self, um método estático quando declarado, recebe ou não parâmetros como em uma função comum.

Por parte da notação em Python, podemos especificar que um

determinado método de classe é estático por meio do decorador @staticmethod.

Para esse exemplo, vamos simplesmente supor que temos um simples

gerador de números de usuário. Para isso importamos o módulo randint da biblioteca random.

Em seguida criamos uma classe de nome Usuário, é colocado o decorador @staticmethod identificando que o método de classe gerador_id( ) é estático, ou seja, tem o comportamento de uma função independente.

Observando sua sintaxe, note que a mesma não possui parâmetros, não

retorna nada para nenhum objeto da classe ou de fora dela, é um simples gerador de números aleatórios “encapsulado” dentro de uma classe.