Вопрос №27
Осталось:
Что такое статические методы и методы класса?
Образцовый ответ
Показывать ответ по умолчанию
Обычный метод (метод экземпляра):
Получает ссылку на экземпляр (self) в качестве первого аргумента:
class MyClass: def instance_method(self): return f"Вызван для {self}"
@classmethod — метод класса:
Получает ссылку на класс (cls) вместо экземпляра:
class User: def __init__(self, name, age): self.name = name self.age = age @classmethod def from_string(cls, data_string): name, age = data_string.split(",") return cls(name, int(age)) # Альтернативный конструктор user = User.from_string("Анна,25") print(user.name) # Анна
@staticmethod — статический метод:
Не получает ни self, ни cls. По сути — обычная функция внутри класса:
class MathUtils: @staticmethod def is_even(n): return n % 2 == 0 print(MathUtils.is_even(4)) # True
Когда что использовать:
- Метод экземпляра — когда нужен доступ к атрибутам объекта (self).
- @classmethod — для альтернативных конструкторов или работы с атрибутами класса.
- @staticmethod — для утилитных функций, логически связанных с классом, но не зависящих от экземпляра или класса.
