Функция Python classmethod()

Python3 内置函数Встроенные функции Python3


classmethod()Это встроенная функция в Python, используемая для преобразования метода в метод класса.

Метод класса — это метод, который принадлежит классу, а не экземпляру; его первый параметр — сам класс (обычно называется cls). Методы класса могут получать доступ к атрибутам класса, но не могут получать доступ к атрибутам экземпляра.

Определения слов: classmethod 是 class method(类方法)的缩写。


Базовый синтаксис и параметры

Формат синтаксиса

classmethod(function)

Описание параметра

  • Параметр function:
    • Тип: объект функции
    • Описание: функция, которую нужно преобразовать в метод класса.

Описание функций

  • Возвращаемое значение: Возвращает объект метода класса.
  • Особенности: Первый параметр — это сам класс (cls), а не экземпляр (self).

Примеры

Пример 1: Базовое использование

Пример

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

# Вызывается через класс (создание экземпляра не требуется)
print(MyClass.increment())  # Вывод: 1
print(MyClass.increment())  # Вывод: 2
print(MyClass.get_count())   # Вывод: 2

# Также можно вызвать через экземпляр (но так делают редко)
obj = MyClass()
print(obj.increment())  # Вывод: 3

Ожидаемый вывод:

1
2
2
3

Пояснение кода:

  1. Методы класса определяются с помощью декоратора @classmethod.
  2. Первый параметр — cls, который представляет сам класс.

Пример 2: Фабричный метод

Пример

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

    @classmethod
    def from_dict(cls, data):
        """Создать объект из словаря"""
        return cls(data['name'], data['age'])

    @classmethod
    def from_string(cls, s):
        """Создать объект из строки (формат: name-age)"""
        name, age = s.split('-')
        return cls(name, int(age))

    def __str__(self):
        return f"{self.name}, {self.age} лет"

# Паттерн «Фабрика» с использованием методов класса
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
p2 = Person.from_string("Jerry-25")

print(p1)  # Вывод: Tom, 20 лет
print(p2)  # Вывод: Jerry, 25 лет

Ожидаемый вывод:

Tom, 20岁
Jerry, 25岁

Методы класса обычно используются для реализации фабричных методов создания объектов из различных источников данных.


Python3 内置函数Встроенные функции Python3


Другие расширения