Code: Select all
from typing import Any
from typing import overload
from typing import no_type_check
from collections.abc import Mapping
@overload
def f[K, V](arg: Mapping[K, V], /) -> Mapping[K, V]:
...
@overload
def f[K, V, V2](arg: Mapping[K, V], /, **kwargs: V2) -> Mapping[K | str, V | V2]:
...
@no_type_check
def f(arg, /, **kwargs):
pass
Überladung 1 für „f“ überlappt Überladung 2 und gibt einen inkompatiblen Typ zurück (reportOverlappingOverload)
Ich verstehe diesen Fehler nicht. Warum ist es wichtig, dass sich Überladungen bei der Bestellung überschneiden und daher bei mehrdeutigen Aufrufen die erste verwendet werden sollte? Warum müssen Rückgabetypen kompatibel sein? Hier geht es vor allem darum, nach Möglichkeit einen genaueren Typ anzugeben (wenn keine Schlüsselwortargumente übergeben werden).
Wie löse ich das?
Mobile version