[Python] Type hint for an object that can be used as a type hint itself

Discussão em 'Python' iniciado por Stack, Maio 13, 2025.

  1. Stack

    Stack Membro Participativo

    I have following code

    from typing import TypeVar, Type, overload

    T = TypeVar('T')


    @overload
    def foo(bar: Type[T]) -> T:
    ...

    @overload
    def foo(bar: Type[T] | None) -> T | None:
    ...


    def foo(bar: Type[T] | None) -> T | None:
    # implementation goes here
    ...


    class Bar:
    ...


    bar = foo(Bar)
    bar2 = foo(Bar | None) # No overload variant of "foo" matches argument type "UnionType"


    How to properly type hint case for bar2?


    I tried some others:

    Type[T | None], mypy says Overloaded function signature 2 will never be matched: signature 1's parameter type(s) are the same or broader

    removing 2nd overload (resulting in only Type[T] allowed), mypy says No overload variant of "foo" matches argument type "UnionType" (meaning 2nd overload is incorrect for that case anyways)

    Continue reading...

Compartilhe esta Página