Métodos de instância x estáticos x métodos de classe em Python: as diferenças importantes

Métodos de instância x estáticos x métodos de classe em Python: as diferenças importantes

Os métodos Python geralmente podem ser confusos quando você entra na programação orientada a objetos (OOP). Este guia cobre os três principais tipos de métodos em Python.





Os 3 tipos de métodos em Python

Existem três tipos de métodos em Python: métodos de instância , métodos estáticos , e métodos de classe .





Saber as diferenças nem sempre é necessário para codificar scripts Python básicos, mas quando você avança para o OOP, as diferenças podem fazer uma grande mudança.





Se você é novo no Python ou apenas deseja experimentar sem ter que instalar nada, certifique-se de visitar estes conchas Python interativas online .

Antes de começar: Compreendendo os padrões do decorador

Antes de olhar para as diferenças, é importante entender um padrão de design conhecido como padrão de decorador , ou simplesmente chamado de decorador .



Os decoradores parecem complexos, mas não há nada a temer. Decoradores são simplesmente funções. Você pode escrevê-los sozinho ou usar aqueles incluídos nas bibliotecas ou na biblioteca padrão do Python.

Como qualquer função, os decoradores executam uma tarefa. A diferença aqui é que os decoradores aplicam lógica ou alteram o comportamento de outras funções. Eles são uma maneira excelente de reutilizar código e podem ajudar a separar a lógica em questões individuais.





O padrão decorador é a maneira preferida do Python de definir métodos estáticos ou de classe. Aqui está a aparência de um em Python:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is decorated! '''
print('I'm a decorated function!')

de = DecoratorExample()
de.example_function()

Os decoradores devem preceder imediatamente uma declaração de função ou classe. Eles começam com o @ assinar e, ao contrário dos métodos normais, você não precisa colocar parênteses no final, a menos que esteja passando argumentos.





É possível combinar vários decoradores, escrever o seu próprio e aplicá-los às classes também, mas você não precisará fazer nada para esses exemplos.

como descobrir sobre alguém

Métodos de instância em Python

Os métodos de instância são o tipo de método mais comum nas classes Python. São assim chamados porque podem acessar dados exclusivos de sua instância. Se você tiver dois objetos, cada um criado a partir de uma classe de carro, cada um deles poderá ter propriedades diferentes. Eles podem ter diferentes cores, tamanhos de motor, assentos e assim por diante.

Métodos de instância devem ter auto como um parâmetro, mas você não precisa passar isso todas as vezes. Self é outro termo especial do Python. Dentro de qualquer método de instância, você pode usar self para acessar quaisquer dados ou métodos que possam residir em sua classe. Você não será capaz de acessá-los sem passar por si mesmo.

Finalmente, como os métodos de instância são os mais comuns, não há necessidade de decorador. Qualquer método que você criar será criado automaticamente como um método de instância, a menos que você diga ao Python o contrário.

Aqui está um exemplo:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
self.name = 'Decorator_Example'
def example_function(self):
''' This method is an instance method! '''
print('I'm an instance method!')
print('My name is ' + self.name)

de = DecoratorExample()
de.example_function()

o nome variável é acessada através de auto . Observe que quando função_exemplo é chamado, você não precisa passar por ele --- Python faz isso por você.

Métodos estáticos em Python

Os métodos estáticos são métodos relacionados a uma classe de alguma forma, mas não precisam acessar nenhum dado específico da classe. Você não tem que usar auto , e você nem mesmo precisa instanciar uma instância, pode simplesmente chamar seu método:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is a static method! '''
print('I'm a static method!')

de = DecoratorExample.example_function()

o @staticmethod decorator foi usado para dizer ao Python que este método é um método estático.

Os métodos estáticos são ótimos para funções utilitárias, que executam uma tarefa isoladamente. Eles não precisam (e não podem) acessar os dados da classe. Eles devem ser totalmente autocontidos e funcionar apenas com dados passados ​​como argumentos. Você pode usar um método estático para somar dois números ou imprimir uma determinada string.

Métodos de classe em Python

Os métodos de classe são o terceiro e último tipo de método OOP a saber. Os métodos de classe sabem sobre sua classe. Eles não podem acessar dados de instância específicos, mas podem chamar outros métodos estáticos.

Métodos de classe não precisam auto como um argumento, mas eles precisam de um parâmetro chamado cls . Isso significa classe , e como eu, é transmitido automaticamente pelo Python.

Métodos de classe são criados usando o @classmethod decorador.

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@classmethod
def example_function(cls):
''' This method is a class method! '''
print('I'm a class method!')
cls.some_other_function()
@staticmethod
def some_other_function():
print('Hello!')

de = DecoratorExample()
de.example_function()

Os métodos de classe são possivelmente os tipos de método mais confusos dos três, mas eles têm seus usos. Os métodos de classe podem manipular a própria classe, o que é útil quando você está trabalhando em projetos maiores e mais complexos.

Quando usar cada tipo de método

Pode parecer uma decisão difícil e assustadora escolher entre os tipos de métodos em Python, mas você logo pegará o jeito com um pouco de prática.

como ajustar o Windows 10 para jogos

Mesmo se você escrever pequenos scripts apenas para se divertir, aprender outro recurso OOP do Python é uma ótima habilidade de saber e pode ajudar a tornar seu código mais fácil de solucionar e reutilizá-lo no futuro.

Resumindo:

  1. Métodos de instância: O tipo de método mais comum. Capaz de acessar dados e propriedades exclusivas de cada instância.
  2. Métodos estáticos: Não é possível acessar mais nada na classe. Código totalmente independente.
  3. Métodos de aula: Pode acessar métodos limitados na classe. Pode modificar detalhes específicos da classe.

Se este tutorial era um pouco avançado, ou não era exatamente o que você estava procurando, por que não dar uma olhada nesses cursos para ir de iniciante a profissional em Python? Esses 5 sites também são ótimos para iniciantes em Python. Se você deseja um uso físico e real do Python, mas está entediado com o Raspberry Pi, que tal nosso guia para controlando o Arduino com Python ?

Compartilhado Compartilhado Tweet O email Como limpar seu PC com Windows usando o prompt de comando

Se o seu PC com Windows estiver com pouco espaço de armazenamento, limpe o lixo usando esses utilitários de prompt de comando rápidos.

Leia a seguir
Tópicos relacionados
  • Programação
  • Programação
  • Pitão
Sobre o autor Joe Coburn(136 artigos publicados)

Joe é graduado em Ciência da Computação pela University of Lincoln, no Reino Unido. Ele é um desenvolvedor de software profissional e, quando não está pilotando drones ou escrevendo música, pode ser encontrado tirando fotos ou produzindo vídeos.

Mais de Joe Coburn

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Clique aqui para se inscrever