Métodos estáticos Python

Resumo : neste tutorial, você aprenderá sobre os métodos estáticos do Python e como usá-los para criar uma classe de utilitário.

Introdução aos métodos estáticos do Python

Até agora, você aprendeu sobre métodos de instância vinculados a uma instância específica. Isso significa que os métodos de instância podem acessar e modificar o estado do objeto vinculado.

Além disso, você aprendeu sobre métodos de classe vinculados a uma classe. Os métodos de classe podem acessar e modificar o estado da classe.

Ao contrário dos métodos de instância, os métodos estáticos não estão vinculados a um objeto. Em outras palavras, os métodos estáticos não podem acessar e modificar o estado de um objeto.

Além disso, Python não passa implicitamente o clsparâmetro (ou o selfparâmetro) para métodos estáticos. Portanto, os métodos estáticos não podem acessar e modificar o estado da classe.

Na prática, você usa métodos estáticos para definir métodos utilitários ou funções de grupo que possuem alguns relacionamentos lógicos em uma classe.

Para definir um método estático, você usa o @staticmethoddecorador:

class className:
    @staticmethod
    def static_method_name(param_list):
        passLinguagem de código:  Python  ( python )

Para chamar um método estático, você usa esta sintaxe:

className.static_method_name()Linguagem de código:  Python  ( python )

Métodos estáticos Python versus métodos de classe

Como os métodos estáticos são bastante semelhantes aos métodos de classe , você pode usar o seguinte para encontrar as diferenças entre eles:

Métodos de classe Métodos estáticos
Python passa implicitamente o clsargumento para métodos de classe. Python não passa implicitamente o clsargumento para métodos estáticos
Os métodos de classe podem acessar e modificar o estado da classe. Os métodos estáticos não podem acessar ou modificar o estado da classe.
Use @classmethoddecoradores para definir métodos de classe Use @staticmethoddecoradores para definir métodos estáticos.

Exemplos de métodos estáticos Python

O seguinte define uma classe chamada TemperatureConverterque possui métodos estáticos para converter temperaturas entre Celsius, Fahrenheit e Kelvin:

class TemperatureConverter:
    KEVIN = 'K',
    FAHRENHEIT = 'F'
    CELSIUS = 'C'

    @staticmethod
    def celsius_to_fahrenheit(c):
        return 9*c/5 + 32

    @staticmethod
    def fahrenheit_to_celsius(f):
        return 5*(f-32)/9

    @staticmethod
    def celsius_to_kelvin(c):
        return c + 273.15

    @staticmethod
    def kelvin_to_celsius(k):
        return k - 273.15

    @staticmethod
    def fahrenheit_to_kelvin(f):
        return 5*(f+459.67)/9

    @staticmethod
    def kelvin_to_fahrenheit(k):
        return 9*k/5 - 459.67

    @staticmethod
    def format(value, unit):
        symbol = ''
        if unit == TemperatureConverter.FAHRENHEIT:
            symbol = '°F'
        elif unit == TemperatureConverter.CELSIUS:
            symbol = '°C'
        elif unit == TemperatureConverter.KEVIN:
            symbol = '°K'

        return f'{value}{symbol}'
Linguagem de código:  Python  ( python )

E para chamar a TemperatureConverterclasse, você usa o seguinte:

f = TemperatureConverter.celsius_to_fahrenheit(35)
print(TemperatureConverter.format(f, TemperatureConverter.FAHRENHEIT))
Linguagem de código:  Python  ( python )

Resumo

  • Use métodos estáticos para definir métodos utilitários ou agrupar funções logicamente relacionadas em uma classe.
  • Use o @staticmethoddecorador para definir um método estático.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *