TGViewer
Oh My Py Oh My Py @ohmypy · 2.26K subscribers
Post #159 2.54K
Задачка: летающая свинья

Допустим, вы написали утилиту, которая отправляет что угодно в полет:

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(). Как лучше это сделать?

Опрос следует.

песочница

#задачка
  • 👍 4
  • 😁 2
  • 🤔 2
More from @ohmypy
  1. Apr 4, 2023ChatGPT-бот: группы, внешние ссылки, шорткаты Сделать GPT-бота легко, а вот удобного GPT-б…
  2. Mar 11, 2023ChatGPT-бот на Python Последние месяцы поставили рекорд по количеству программ, интегриров…
  3. Aug 3, 2022JSON Lines На днях узнал про формат JSON Lines. Это такой CSV на стероидах: — каждая запис…
  4. Jul 18, 2022Попробуйте Go Чем больше я узнаю Python, тем больше мне нравится Go. Альберт Эйнштейн Нет,…
  5. Jun 1, 2022Многозначительное многоточие Не знаю, заметили вы или нет в посте о протоколах. Не самая и…
  6. May 31, 2022Через протокол Цитата выше взята из PEP 544 (Python Enhancement Proposal, предложение о до…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →