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

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

Post by Anonymous »

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!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post