Python función classmethod()

Python3 内置函数Funciones integradas de Python3


classmethod()Es una función integrada en Python que se utiliza para convertir un método en un método de clase.

Los métodos de clase son métodos que pertenecen a la clase y no a la instancia; el primer parámetro es la clase en sí (generalmente denominado cls). Los métodos de clase pueden acceder a los atributos de la clase, pero no a los atributos de la instancia.

Definición de la palabra: classmethod 是 class method(类方法)的缩写。


Sintaxis básica y parámetros

Formato de sintaxis

classmethod(function)

Descripción de parámetros

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

Descripción de la función

  • Valor de retornoDevuelve un objeto de método de clase.
  • CaracterísticasEl primer parámetro es la clase en sí (cls), no la instancia (self).

Ejemplos

Ejemplo 1: Uso básico

Ejemplo

class MyClass:
    class_attr = 0

    @classmethod
    def increment(cls):
        cls.class_attr += 1
        return cls.class_attr

    @classmethod
    def get_count(cls):
        return cls.class_attr

# Llamado a través de la clase (no es necesario crear una instancia)
print(MyClass.increment())  # Salida: 1
print(MyClass.increment())  # Salida: 2
print(MyClass.get_count())   # Salida: 2

# También se puede llamar a través de una instancia (pero no es común)
obj = MyClass()
print(obj.increment())  # Salida: 3

Resultado esperado de la ejecución:

1
2
2
3

Análisis del código:

  1. Los métodos de clase se definen mediante el decorador @classmethod.
  2. El primer parámetro es cls, que representa la clase en sí.

Ejemplo 2: Método de fábrica

Ejemplo

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

    @classmethod
    def from_dict(cls, data):
        """Crear objeto desde un diccionario"""
        return cls(data['name'], data['age'])

    @classmethod
    def from_string(cls, s):
        """Crear objeto desde una cadena (formato: name-age)"""
        name, age = s.split('-')
        return cls(name, int(age))

    def __str__(self):
        return f"{self.name}, {self.age} años"

# Usando el patrón de fábrica con métodos de clase
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
p2 = Person.from_string("Jerry-25")

print(p1)  # Salida: Tom, 20 años
print(p2)  # Salida: Jerry, 25 años

Resultado esperado de la ejecución:

Tom, 20岁
Jerry, 25岁

Los métodos de clase se utilizan a menudo para implementar métodos de fábrica, creando objetos desde diferentes fuentes de datos.


Python3 内置函数Funciones integradas de Python3


Otras extensiones