Interview OSПолная программаБесплатный урок · Python Core
Один класс.
Три вида методов.
Разберитесь с self и cls, проверьте себя и попробуйте повторение. Без аккаунта и оплаты. Пробный результат не меняет прогресс курса.
- 01 / Теория
- 02 / Практика
- 03 / Карточки
Кому нужен контекст?
Обычный метод при вызове через объект получает этот объект в self. Он подходит для действий с состоянием конкретного экземпляра.
@classmethod получает класс в cls. Например, фабрика разбирает строку и создаёт объект через cls(...). При вызове на подклассе получится экземпляр подкласса.
@staticmethod не получает ни self, ни cls автоматически. Это функция, помещённая в класс по смыслу. Если связи с классом нет, обычная функция модуля проще.
class User:
def __init__(self, name):
self.name = name
def greeting(self):
return f"Hello, {self.name}"
@classmethod
def from_csv(cls, row):
return cls(row.split(",")[0].strip())
@staticmethod
def valid_name(name):
return bool(name.strip())
user = User.from_csv("Alice,developer")
print(user.greeting()) # Hello, Alice
print(User.valid_name("Alice")) # TrueПервоисточники: classmethod и staticmethod в документации Python.