Función Python staticmethod()

Python3 内置函数Funciones integradas de Python3


staticmethod()Es una función integrada en Python utilizada para convertir un método en un método estático.

Un método estático es un método que pertenece a la clase y no a la instancia; no necesita acceder a atributos de instancia ni llamar a métodos de instancia.staticmethod()Puede usarse como decorador o llamarse directamente.

Significado de la palabra: staticmethodSístatic methodAbreviatura de (método estático).


Sintaxis básica y parámetros

Formato de sintaxis

staticmethod(function)

Descripción de parámetros

  • Parámetro function:
    • Tipo: objeto función
    • Descripción: la función que se va a convertir en método estático.

Descripción de la función

  • Valor de retorno: Devuelve un objeto de método estático.
  • Características: Los métodos estáticos no necesitanselfparámetro, y se pueden llamar directamente mediante el nombre de la clase.

Ejemplos

Ejemplo 1: Uso básico

Ejemplo

class MathUtils:
    # Definir un método estático con un decorador (recomendado)
    @staticmethod
    def add(a, b):
        return a + b

    @staticmethod
    def multiply(a, b):
        return a * b

# Llamar directamente a través del nombre de la clase (no es necesario crear una instancia)
result = MathUtils.add(3, 5)
print(result)  # Salida: 8

result = MathUtils.multiply(4, 6)
print(result)  # Salida: 24

Resultado esperado de ejecución:

8
24

Análisis del código:

  1. Los métodos estáticos usan@staticmethodun decorador para definirse.
  2. Se pueden llamar como funciones normales, pero pertenecen al espacio de nombres de la clase.
  3. No es necesario crear una instancia de la clase para llamarlos.

Ejemplo 2: Sin usar decorador

Ejemplo

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

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

# Llamar al método estático
print(Temperature.celsius_to_fahrenheit(0))    # Salida: 32.0
print(Temperature.celsius_to_fahrenheit(100)) # Salida: 212.0
print(Temperature.fahrenheit_to_celsius(32)) # Salida: 0.0

# También se puede llamar a través de una instancia
temp = Temperature()
print(temp.celsius_to_fahrenheit(25))  # Salida: 77.0

Resultado esperado de ejecución:

32.0
212.0
0.0
77.0

Análisis del código:

  • Los métodos estáticos se usan a menudo en clases de utilidades para encapsular funciones que no dependen de la instancia.
  • Los métodos estáticos pueden llamarse mediante el nombre de la clase o el nombre de la instancia.

Ejemplo 3: Aplicación en el patrón de fábrica

Ejemplo

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @staticmethod
    def from_dict(data):
        # Crear un objeto Person desde un diccionario
        return Person(data['name'], data['age'])

    @staticmethod
    def create_adult(name):
        # Crear un adulto
        return Person(name, 18)

# Crear objetos usando un método estático
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
print(p1.name, p1.age)  # Salida: Tom 20

p2 = Person.create_adult('Jack')
print(p2.name, p2.age)  # Salida: Jack 18

Resultado esperado de ejecución:

Tom 20
Jack 18

Los métodos estáticos se usan a menudo como métodos de fábrica para crear instancias de objetos desde diferentes fuentes de datos.


Python3 内置函数Funciones integradas de Python3


Otras extensiones