Вы, вероятно, захотите использовать протоколы здесь.
Короче говоря, вы определяете пользовательский протокол в вашей кодовой базе, содержащий подписи для методов, которые должен иметь любой объект "соединения".Затем вы можете возвращать любой произвольный объект, если он содержит эти методы с указанными методами.
Последнее замечание: я знаю, что mypy поддерживает протоколы, но я не уверен, что другие контроллеры типов делают,Существует открытый PEP для официального представления протоколов в экосистеме типирования Python - предположительно, другие контролеры типов добавят поддержку протоколов после того, как PEP будет принят, если они этого еще не сделали.