Допустим, вы написали утилиту, которая отправляет что угодно в полет:
def launch(thing):
thing.fly()
Ну то есть не прям все что угодно, а любую штуку с методом
.fly(). Очень удобно: одной функцией запускаем и голубя Френка, и самолет, и даже Супермена:class Frank:
def fly(self):
print("💩")
class Plane:
def fly(self):
print("Рейс задержан")
class Superman:
def fly(self):
print("ε===(っ≧ω≦)っ")
Вжух:
f = Frank()
launch(f)
# 💩
p = Plane()
launch(p)
# Рейс задержан
s = Superman()
launch(s)
# ε===(っ≧ω≦)っ
Не то чтобы наши герои особо успешно справлялись с задачей, но по крайней мере запуск на них работает.
Работает, и ладно. Но иногда (особенно если программа разрастается) разработчику хочется добавить немного строгости. Дать понять, что параметр
thing в launch() — это не любой объект, а обязательно летающая хреновина с методом fly(). Как лучше это сделать?Опрос следует.
песочница
#задачка