Ich spielte ein bisschen mit dem neuen Typ Hinting/Typing-Modul mit python3.5 versuchte einen Weg zu finden, zu bestätigen, ob der angedeutete Typ gleich dem eigentlichen Typ der Variable ist und stieß auf etwas, das mich eher überraschte.Warum wird isinstance ([1, 2, 3], List [str]) als wahr ausgewertet?
>>> from typing import List
>>> someList = [1, 2, 3]
>>> isinstance(someList, List[str])
True
Fortsetzung meiner Suche einen Weg für die Suche nach eine Variable es angedeutet Art zu vergleichen habe ich auch schon versucht, diese:
>>> anotherList = ["foo", "bar"]
>>> type(anotherList) is List[str]
False
der Lage wäre, jemand zu erklären, warum genau die ehemaligen auswertet auf True?
Und fortfahren, gibt es eine solide Möglichkeit, um zu überprüfen, ob der Typ einer Variablen einem Typ entspricht, der vom Typisierungsmodul kommt?
Nun, zum einen sind 'type (x) ist a' und' isinstance (x, a) 'sind definitiv nicht das Gleiche. Ein Objekt kann eine Instanz vieler Typen sein (mit einer Vererbungshierarchie), aber "type (x)" gibt Ihnen nur seinen spezifischsten Typ. – BrenBarn
Yup, ich bin mir dessen bewusst, nachdem ich es getestet habe. Ich hatte immer noch das Gefühl, es in meine Frage aufzunehmen, da es oft als Einstieg angeboten wird, wenn man etwas über Typvergleiche in Python fragt. – McMuffinton
Was bedeutet '' '(['foo', 'bar']) == List [str]' '' evaluate to? –