Типизация объекта класса, который реализует два абстрактных класса
Есть два абстрактных класса IWalker, и ITalker, и есть класс который реализует и наследует эти два абстрактных класса. Однако я не знаю как сделать type hint для класса, который реализует сразу несколько абстрактных классов. Будьте столь любезны, подскажите любителю типизации в динамически типизированном языке.
Код:
import abc
import random
from typing import List
class IWalker(abc.ABC):
@abc.abstractmethod
def walk(self):
...
class ITalker(abc.ABC):
@abc.abstractmethod
def talk(self):
...
class Bactria(IWalker):
def walk(self):
print("Бактерия ходит")
class Virus(IWalker):
def walk(self):
print("Вирус двигается")
class Penguin(IWalker, ITalker):
def talk(self):
print("Linux")
def walk(self):
print("Пингвин скатывается по пузу: фью-ю-ю")
class Elephant(IWalker, ITalker):
def walk(self):
print("Слон ходит: Топ, топ, топ")
def talk(self):
print("Слон говорит: ру-у-у")
def process_talkers_and_walkers(talker_and_walker: ...):
talker_and_walker.walk()
talker_and_walker.talk()
def without_typing_code():
talkers_and_walkers: List[...] = [Penguin, Elephant]
random_talker_and_walker: ... = random.choice(talkers_and_walkers)()
process_talkers_and_walkers(random_talker_and_walker)