Mediummethods
Чем @staticmethod/classmethod от instance method?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Instance method — def m(self, ...), получает instance как первый аргумент. Class method — @classmethod def m(cls, ...), получает класс. Static method — @staticmethod def m(...), без self/cls.
class Temperature:
ABSOLUTE_ZERO = -273.15
def __init__(self, celsius):
self.celsius = celsius
def to_fahrenheit(self): # instance method
return self.celsius * 9/5 + 32
@classmethod
def from_fahrenheit(cls, f): # alternative constructor
return cls((f - 32) * 5/9)
@staticmethod
def is_valid(celsius): # helper, без доступа к cls/self
return celsius >= Temperature.ABSOLUTE_ZERO- Instance method — для работы с данными instance;
- classmethod — alternative constructors, factory, polymorphic creation;
- staticmethod — utility functions, сгруппированные с классом.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.