Es gibt zwei integrierte Funktionen, mit denen Sie den Typ eines Objekts identifizieren können. Sie verwenden können , type()
wenn Sie den genauen Typ eines Objekts benötigen, und isinstance()
zu überprüfen , ein Objekt der Art gegen etwas. Normalerweise möchten Sie die isistance()
meiste Zeit verwenden, da es sehr robust ist und auch die Typvererbung unterstützt.
Um den tatsächlichen Typ eines Objekts abzurufen, verwenden Sie die integrierte type()
Funktion. Wenn Sie ein Objekt als einzigen Parameter übergeben, wird das Typobjekt dieses Objekts zurückgegeben:
>>> type([]) is list
True
>>> type({}) is dict
True
>>> type('') is str
True
>>> type(0) is int
True
Dies funktioniert natürlich auch für benutzerdefinierte Typen:
>>> class Test1 (object):
pass
>>> class Test2 (Test1):
pass
>>> a = Test1()
>>> b = Test2()
>>> type(a) is Test1
True
>>> type(b) is Test2
True
Beachten Sie, dass type()
nur der unmittelbare Typ des Objekts zurückgegeben wird, Sie jedoch nicht über die Typvererbung informiert werden können.
>>> type(b) is Test1
False
Um dies abzudecken, sollten Sie die isinstance
Funktion verwenden. Dies funktioniert natürlich auch für eingebaute Typen:
>>> isinstance(b, Test1)
True
>>> isinstance(b, Test2)
True
>>> isinstance(a, Test1)
True
>>> isinstance(a, Test2)
False
>>> isinstance([], list)
True
>>> isinstance({}, dict)
True
isinstance()
Dies ist normalerweise die bevorzugte Methode, um den Typ eines Objekts sicherzustellen, da auch abgeleitete Typen akzeptiert werden. Wenn Sie das Typobjekt nicht tatsächlich benötigen (aus welchem Grund auch immer), wird die Verwendung der Verwendung isinstance()
vorgezogen type()
.
Der zweite Parameter von isinstance()
akzeptiert auch ein Tupel von Typen, sodass nach mehreren Typen gleichzeitig gesucht werden kann. isinstance
gibt dann true zurück, wenn das Objekt einen dieser Typen hat:
>>> isinstance([], (tuple, list, set))
True