In Python gibt es zwei Typbeurteilungsfunktionen: type() und isinstance().
Verwenden Sie type()
Bestimmen wir zunächst den Objekttyp und verwenden Sie die Funktion type():
Grundtypen können anhand von type() beurteilt werden:
>>> type(123) <type 'int'> >>> type('str') <type 'str'> >>> type(None) <type 'NoneType'>
Wenn eine Variable auf eine Funktion oder Klasse zeigt, kann sie auch anhand von type() beurteilt werden:
>>> type(abs) <type 'builtin_function_or_method'> >>> type(a) <class '__main__.Animal'>
Aber was bedeutet das? type()-Funktionsrückgabe? Was ist mit Typ? Es gibt den Typtyp zurück.
Verwenden Sie isinstance()
Für Klassenvererbungsbeziehungen ist die Verwendung von type() sehr unpraktisch. Um den Typ der Klasse zu bestimmen, können wir die Funktion isinstance() verwenden.
Sehen wir uns das letzte Beispiel an. Wenn die Vererbungsbeziehung lautet:
object -> Animal -> Dog -> Husky
Dann kann isinstance() uns sagen, ob ein Objekt von einem bestimmten Typ ist. Erstellen Sie zunächst drei Arten von Objekten:
>>> a = Animal() >>> d = Dog() >>> h = Husky()
Dann beurteilen Sie:
>>> isinstance(h, Husky) True
Es gibt kein Problem, da die h-Variable auf das Husky-Objekt zeigt.
Abwertung:
>>> isinstance(h, Dog) True
Obwohl h selbst vom Typ Husky ist, ist er auch vom Typ Hund, da Husky vom Hund erbt. Mit anderen Worten: isinstance() bestimmt, ob ein Objekt vom Typ selbst ist oder sich in der übergeordneten Vererbungskette des Typs befindet.
Daher können wir sicher sein, dass h immer noch vom Typ Tier ist:
>>> isinstance(h, Animal) True
Ebenso ist d, dessen eigentlicher Typ Hund ist, ebenfalls vom Typ Tier:
>>> isinstance(d, Dog) and isinstance(d, Animal) True
Allerdings d ist nicht vom Husky-Typ :
>>> isinstance(d, Husky) False
Der Basistyp, der mit type() beurteilt werden kann, kann auch mit isinstance() beurteilt werden:
>>> isinstance('a', str) True >>> isinstance(u'a', unicode) True >>> isinstance('a', unicode) False
Und Sie können auch beurteilen, ob eine Variable vorhanden ist einer von bestimmten Typen, wie zum Beispiel der folgende. Sie können den Code verwenden, um zu bestimmen, ob es str oder Unicode ist:
>>> isinstance('a', (str, unicode)) True >>> isinstance(u'a', (str, unicode)) True
Da sowohl str als auch Unicode von basestring geerbt werden, können Sie den obigen Code auch wie folgt vereinfachen:
>>> isinstance(u'a', basestring) True
Da wir type() haben, um den Typ zu bestimmen, warum gibt es isinstance()? Ein offensichtlicher Unterschied besteht in der Beurteilung von Unterklassen. type() betrachtet eine Unterklasse nicht als übergeordneten Typ. isinstance() betrachtet die Unterklasse als übergeordneten Klassentyp.
Das obige ist der detaillierte Inhalt vonSo überprüfen Sie den Typ eines Objekts. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!