Динамическая типизация с typing.Protocol в Python
👍 - если было полезно
@python_practics
typing.Protocol из модуля typing позволяет задавать интерфейсы для классов без явного наследования, обеспечивая поддержку структурной типизации. Это особенно полезно для проверки совместимости объектов на основе их методов, а не явного наследования, что делает код более гибким.from typing import Protocol
class Flyable(Protocol):
def fly(self) -> None:
pass
# Классы, реализующие метод fly, автоматически считаются Flyable
class Bird:
def fly(self) -> None:
print("Bird is flying")
class Drone:
def fly(self) -> None:
print("Drone is flying")
# Функция, принимающая любой объект, соответствующий Flyable
def make_it_fly(obj: Flyable) -> None:
obj.fly()
# Тест
bird = Bird()
drone = Drone()
make_it_fly(bird) # Bird is flying
make_it_fly(drone) # Drone is flying
👍 - если было полезно
@python_practics
👍4❤1