У меня есть два модуля, которые реализуют классы для разных версий одного и того же API, то есть my_api_v2.py
и my_api_v3.py
.Теперь я хотел бы написать клиентский класс, который работает с некоторыми из этих классов и параметризован с помощью модуля, так что классы должны поступать из одного и того же модуля (то есть с одной и той же версией API).В основном это typing.Generic
для модуля вместо класса ...
from typing import Generic, TypeVar
from my_package import my_api_v2, my_api_v3
T = TypeVar('T', my_api_v2, my_api_v3) # ??
class Foo(Generic[T]):
def bar(self, x: T) -> T:
...
..., который затем можно использовать так:
def process_foo(foo: Foo[my_api_v2]) -> Foo[my_api_v2]:
... # Arg and return val must come from the same module
Возможно ли что-то подобное смодуль набора текста?