Typing.overload basierend auf dem Vorhandensein von SchlüsselwortargumentenPython

Python-Programme
Anonymous
 Typing.overload basierend auf dem Vorhandensein von Schlüsselwortargumenten

Post by Anonymous »

Gegeben:

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
pyright beschwert sich:

Ü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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post