Bei der Arbeit mit Python-Objekten ist es oft notwendig, ihren Typ zu bestimmen oder ob sie vorhanden sind gehören zu einer bestimmten Klasse. Python bietet für diese Aufgabe zwei häufig verwendete Methoden: type() und isinstance(). In diesem Artikel werden die Unterschiede zwischen diesen beiden Funktionen untersucht und ihre jeweiligen Anwendungen erläutert.
Die Funktion type() gibt den Typ eines Objekts als Typobjekt zurück. Typobjekte stellen den Typ eines Werts dar und nicht eine Instanz dieses Typs. Um festzustellen, ob ein Objekt von einem bestimmten Typ ist, wird der Typ des Objekts mit dem Typobjekt verglichen, das den gewünschten Typ darstellt.
Zum Beispiel:
a = 1 b = "Hello" print(type(a)) # <class 'int'> print(type(b)) # <class 'str'>
In diesem Fall geben Sie ein (a) gibt das Typobjekt zurück, das die int-Klasse darstellt, während type(b) das Typobjekt zurückgibt, das die str-Klasse darstellt.
Die Funktion isinstance() prüft, ob ein Objekt eine Instanz einer bestimmten Klasse oder eine Unterklasse dieser Klasse ist. Es verwendet ein Objekt als erstes Argument und eine Klasse oder ein Tupel von Klassen als zweites Argument. isinstance() gibt True zurück, wenn das Objekt eine Instanz der angegebenen Klasse oder Unterklasse ist, andernfalls False.
Betrachten Sie dieses Beispiel:
a = 1 b = [1, 2, 3] print(isinstance(a, int)) # True print(isinstance(b, list)) # True
In diesem Beispiel ist isinstance(a, int ) gibt True zurück, da a eine Instanz der int-Klasse ist. In ähnlicher Weise gibt isinstance(b, list) „True“ zurück, da b eine Instanz der Listenklasse ist.
Der Hauptunterschied zwischen type() und isinstance() besteht darin, dass type() prüft auf Objekttypgleichheit, während isinstance() auf Vererbungsbeziehungen prüft. isinstance() berücksichtigt Vererbung, was bedeutet, dass ein Objekt, das von einer bestimmten Klasse erbt, auch als Instanz dieser Klasse betrachtet wird. type() hingegen prüft strikt auf Typgleichheit und berücksichtigt keine Vererbung.
Im Allgemeinen wird bei Interesse die Verwendung von isinstance() empfohlen bei der Bestimmung, ob ein Objekt einer bestimmten Klasse oder einer ihrer Unterklassen angehört. Dies ist besonders nützlich, wenn es um komplexe Objekthierarchien geht.
Für eine einfache Typprüfung, bei der Vererbung keine Rolle spielt, kann type() als schnellere Alternative verwendet werden.
Das obige ist der detaillierte Inhalt vonPython type() vs. isinstance(): Wann sollte ich welches verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!