Python Geric Typevar, связанный с общим базовым классомPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python Geric Typevar, связанный с общим базовым классом

Сообщение Anonymous »

Скажем, у меня есть класс абстрактного питона в форме: < /p>
class AbcClass(ABC, Generic[T]): ...
< /code>
С некоторыми реализациями: < /p>
class IntClass(AbcClass[int]): ...
class StrClass(AbcClass[str]): ...
class FloatClass(AbcClass[float]): ...

Тогда я хочу иметь функцию foo , которая принимает экземпляр любого из подклассов и значение, которое соответствует типу общего этого подкласса. Например: < /p>
def foo(obj: IntClass, value: int) -> None: ...
def foo(obj: StrClass, value: str) -> None: ...
def foo(obj: FloatClass, value: float) -> None: ...

Я пытаюсь создать декоратор для foo и хочу правильно ввести подпись метода. Как правильный способ ввести функцию foo с вызовом? Прямо сейчас я делаю: < /p>
T = TypeVar("T", bound=AbcClass)
V = TypeVar("V")
FooFn = Callable[[T, V], None]

Тем не менее, V не связан с t в приведенном выше коде, поэтому даже для конкретного intclass Технически V может быть любым ценить. Как я могу это исправить? Использование следующего невозможно, так как ABCClass не является ковариантом, и я также хочу вводить любой подкласс (например,: Intclass ).
FooFn = Callable[[AbcClass[V], V]


Подробнее здесь: https://stackoverflow.com/questions/794 ... base-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python Generic Typevar, связанный с общим базовым классом
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Python Generic Typevar, связанный с общим базовым классом
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Ключ для папоротника должен быть 32-безопасным базовым базовым базовым 64 байтами. Ошибка при шифровании строки
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Linq First с общим базовым классом
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как использовать Linq First с общим базовым классом
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»