Типизация объекта класса, который реализует два абстрактных класса

Есть два абстрактных класса 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)


Ответы (0 шт):