So überprüfen Sie den tatsächlichen Typ eines generischen Parameters in einer generischen Python -Funktion, um alle Para

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: So überprüfen Sie den tatsächlichen Typ eines generischen Parameters in einer generischen Python -Funktion, um alle Para

by Anonymous » 31 Aug 2025, 11:51

Ich arbeite mit einer generischen Funktion in Python und versuche zu verstehen, wie der tatsächliche Typ eines generischen Parameters ordnungsgemäß überprüft werden kann, um den Typ aller Parameter einzugrenzen, die an dieselbe generische Typ Variable t gebunden sind. Hier ist ein Beispiel für meinen Code: < /p>

Code: Select all

from typing import TypeVar

T = TypeVar('T', int, str)

def foo(a: T, b: T) -> None:
if isinstance(a, int):
b.as_integer_ratio()  # Type checker error
< /code>
Wenn ich diesen Code mit einem Typ-Checker ausführe (z. B. Pylance), erhalte ich den folgenden Fehler: < /p>
Cannot access attribute "as_integer_ratio" for class "str*"
Attribute "as_integer_ratio" is unknown
Pylance(reportAttributeAccessIssue)
Ich habe erwartet, dass ein und b beide mit derselben Typ -Variablen t überprüft werden, dass A ein int auch ein enger B auf int eingrenzen würde. Warum berücksichtigt der Typ -Checker immer noch B , um möglicherweise ein Str ? Generika in Python wäre sehr geschätzt!

Top