Método de classe versus método estático em Python

Método de classe versus método estático em Python
Vamos falar sobre a definição e o uso de métodos de classe e estática no Python.

Método de classe em Python

O método de classe está vinculado à própria classe e não a nenhum objetivo da classe. Além disso, apenas variáveis ​​de classe são acessíveis a ele. Alterar um valor dessa variável de classe afeta todos os objetos de classe. Declaramos o método como um método de classe sempre que utilizamos variáveis ​​de classe enquanto implementamos uma técnica. A classe é mencionada por uma palavra -chave 'CLS', que é o primeiro parâmetro de um método de classe. Ao trabalhar com técnicas de fábrica, utilizamos métodos de classe. Os métodos de fábrica compreendem aqueles que, dependendo do caso de uso, retornam um objeto de classe.

Ao usar o decorador @classMethod, bem como a função ClassMethod (), devemos notificar explicitamente Python de que o método é realmente um método de classe. Quando os métodos de classe foram definidos, o processo é bastante semelhante ao de estabelecer uma função padrão. Da mesma forma, para obter variáveis ​​de classe dentro dos métodos de classe, utilizamos uma palavra -chave 'CLS' como o argumento principal. Como resultado, temos controle sobre a atualização do estado da classe devido ao método da classe. Embora seja possível usar uma variável com um nome diferente para 'CLS', isso é desencorajado, já que eu é a norma preferida no Python. O método da classe não pode acessar atributos de instância; Ele só vai acessar os atributos da classe.

Método estático em Python

Uma tarefa independente pode ser concluída usando um método estático, que é um método de utilidade genérica. Os métodos estáticos de Python não são exatamente comparáveis ​​aos de Java, mas mais perto de C++. Embora um método estático não contenha um parâmetro inicial implícito, como eu e 'cls', ele não pode acessar a classe, mas também as variáveis ​​de instância.

Todo método que adicionamos a uma classe será convertido diretamente em um método de instância. Um @staticmethod decorador e a função staticmethod () devem ser usados ​​para indicar expressamente ao python que o método é realmente estático. É bastante semelhante à construção de uma função regular para estabelecer métodos estáticos dentro de uma classe.

Diferença

O método de classe utilizou acesso e alterou o estado da classe. Ao alterar um valor de uma variável de classe que afeta todos os objetos de classe, ela pode alterar o estado de qualquer classe.

Devido à falta de acesso às propriedades do objeto (variáveis ​​de instância), bem como aos atributos de classe, os métodos estáticos são usados ​​apenas às vezes (variáveis ​​de classe). Portanto, eles podem realmente ser úteis em algumas situações, esse tipo de conversão.

Como método de fábrica, os métodos de classe são utilizados. Os métodos de fábrica incluem aqueles que, dependendo do caso de uso, retornam o objeto de classe. Por exemplo, antes de gerar um objeto, você deve executar certos pré-processamento sobre os dados fornecidos.

Exemplo nº 1

Vamos ver como utilizar o método estático no código.

Inicialmente, construímos uma classe chamada "Classe EMP 1" para o funcionário 1. Utilizamos um método estático, especificando uma amostra 'y', além de imprimir os resultados pelo uso do comando de impressão. Depois disso, agora chamamos “emp_1.amostra (), "uma função estática que também pode ser invocada usando o objeto" emp1 = emp_1 ().”

Exemplo nº 2

Ao especificar o método da classe, use @classmethod decorador ou talvez a função de classe (). Para criar um método estático, basta usar a função staticmethod () ou @staticmethod decorador.

Sempre que definir um método de classe, utilize 'CLS' como o primeiro parâmetro. Referindo -se à classe é o 'CLS'. Devido à falta de acesso a variáveis ​​de instância, bem como variáveis ​​de classe, os métodos estáticos não podem aceitar o atributo e a classe como um parâmetro.

Começamos declarando uma aula chamada 'aluno', além de dar a variável 'School_name'. Em seguida, criaríamos um construtor. As variáveis ​​de instância.nome e eu.ID são declarados. Depois disso, implementamos o método de classe criando a função "Change_school ()". Este método inclui os parâmetros "CLS" e "Nome". O método estático é, portanto, usado. Definimos o método "find_notebook ()" e depois passamos o atributo "notebook_name". O comando de retorno é então utilizado para produzir o resultado desejado.

Exemplo no 3

Atributos existem para objetos e classes. As variáveis ​​de classe estão contidas nos atributos de classe, enquanto as variáveis ​​de instância fazem parte dos atributos do objeto. Características apenas no nível da classe são acessíveis através de métodos de classe. Isso pode realmente alterar o estado de classe.

Nesta ilustração, uma classe chamada "trabalhador" com uma variável chamada "location_name" foi criada. Criamos uma função chamada init () que possui as variáveis, nome e ID. Além disso, acessamos duas variáveis ​​de classe diferentes e variáveis ​​de instância, correspondentemente, usando o método show () e a função print () duas vezes. O primeiro comando de impressão consiste em 'trabalhador', 'eu.nome 'e' eu.id 'como os parâmetros. Da mesma forma, o segundo comando de impressão inclui 'localização', 'self.location_name 'como os argumentos. Em seguida, acessando apenas as variáveis ​​de classe, chamamos de método de classe e definimos a função alteração_location (). A função print () seria aplicada mais duas vezes pelo método de classe e também seu parâmetro "CLS". O método estático será construído. Dentro dessa metodologia, a função find_toolbox () é definida. O comando 'retorno' está empregado. Executando essas ações, criamos o objeto "Anis" e invocamos o método de show () apropriado.

Exemplo no 4

Métodos estáticos e de classe estão vinculados à mesma classe. Portanto, o nome da classe deve ser utilizado para acessá -los.

Dentro deste exemplo, criamos a classe “Player”, bem como definir o método init (), que tem duas variáveis ​​e team_no. O método de classe e o método estático seriam construídos. Dentro do método de classe, definimos a função Change_City () que possui dois argumentos. A função find_accessories () será definida dentro do método estático. Esta função tem apenas um argumento. Posteriormente, sob as instruções, chamamos a função print () duas vezes para mostrar os métodos estáticos e de classe. Depois de criar um objeto chamado "Hammad", ligamos individualmente a classe, bem como métodos estáticos.

Conclusão

Neste guia, conversamos sobre classe e métodos estáticos no Python, incluindo o que são, como são definidos e como criá -los. Para ajudá -lo a entender o que está acontecendo dentro dos exemplos, bem como como se deve utilizar essas funções ao longo de sua jornada de codificação, também incluímos alguns detalhes que distinguiam entre esses dois métodos. Em cada um desses casos, os métodos de classe, bem como os métodos estáticos no Python, são usados, juntamente com métodos de instância, quando apropriado.