Что такое @classmethod в Python
Python
Middle
Без компании
Что такое @classmethod в Python
Ответы
`@classmethod` — это декоратор, который превращает метод в метод класса. Такой метод принимает первым аргументом сам класс (`cls`), а не экземпляр (`self`).
**Основные особенности:**
- Работает с классом, а не с экземпляром.
- Может вызываться как через класс, так и через экземпляр.
- Часто используется для фабричных методов или альтернативных конструкторов.
**Пример:**
```
class MyClass:
@classmethod
def from_string(cls, string):
return cls(int(string))
obj = MyClass.from_string("42") # Создаёт экземпляр MyClass(42)
```
**Отличие от `@staticmethod`:**
- `@classmethod` получает класс (`cls`), а `@staticmethod` — ничего не получает.
- `@classmethod` может изменять состояние класса, `@staticmethod` — нет.