| title | Функция classmethod() в Python - Шпаргалка по Python |
|---|---|
| description | Преобразует метод в классовый метод. Классовый метод получает класс в качестве неявного первого аргумента, подобно тому, как метод экземпляра получает экземпляр. |
classmethod — это метод, привязанный к классу, а не к экземпляру класса. Он принимает сам класс в качестве первого аргумента, условно называемого cls. Это контрастирует с обычным методом экземпляра, который принимает экземпляр в качестве первого аргумента (self).
Они часто используются для фабричных методов, которые создают экземпляры класса определенным образом.
Вот распространенный сценарий использования: создание фабричного метода, который может создавать экземпляр класса из другого формата данных, например, из словаря.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_dict(cls, data):
# Это фабричный метод, который создает экземпляр Person из словаря
return cls(data['name'], data['age'])
def display(self):
print(f"Name: {self.name}, Age: {self.age}")
# Данные для нового человека
person_data = {'name': 'John', 'age': 30}
# Создание экземпляра Person с использованием классового метода
p = Person.from_dict(person_data)
p.display()Name: John, Age: 30
- Cheatsheet: Основы ООП
- Cheatsheet: Декораторы
- Cheatsheet: Функции
- staticmethod()
- property()
- object()