So überprüfen Sie den Typ eines Objekts

anonymity
Freigeben: 2019-05-25 15:10:48
Original
4245 Leute haben es durchsucht

In Python gibt es zwei Typbeurteilungsfunktionen: type() und isinstance().

So überprüfen Sie den Typ eines Objekts

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 &#39;int&#39;>
>>> type(&#39;str&#39;)
<type &#39;str&#39;>
>>> type(None)
<type &#39;NoneType&#39;>
Nach dem Login kopieren

Wenn eine Variable auf eine Funktion oder Klasse zeigt, kann sie auch anhand von type() beurteilt werden:

>>> type(abs)
<type &#39;builtin_function_or_method&#39;>
>>> type(a)
<class &#39;__main__.Animal&#39;>
Nach dem Login kopieren

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
Nach dem Login kopieren

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()
Nach dem Login kopieren

Dann beurteilen Sie:

>>> isinstance(h, Husky)
True
Nach dem Login kopieren

Es gibt kein Problem, da die h-Variable auf das Husky-Objekt zeigt.

Abwertung:

>>> isinstance(h, Dog)
True
Nach dem Login kopieren

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
Nach dem Login kopieren

Ebenso ist d, dessen eigentlicher Typ Hund ist, ebenfalls vom Typ Tier:

>>> isinstance(d, Dog) and isinstance(d, Animal)
True
Nach dem Login kopieren

Allerdings d ist nicht vom Husky-Typ :

>>> isinstance(d, Husky)
False
Nach dem Login kopieren

Der Basistyp, der mit type() beurteilt werden kann, kann auch mit isinstance() beurteilt werden:

>>> isinstance(&#39;a&#39;, str)
True
>>> isinstance(u&#39;a&#39;, unicode)
True
>>> isinstance(&#39;a&#39;, unicode)
False
Nach dem Login kopieren

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(&#39;a&#39;, (str, unicode))
True
>>> isinstance(u&#39;a&#39;, (str, unicode))
True
Nach dem Login kopieren

Da sowohl str als auch Unicode von basestring geerbt werden, können Sie den obigen Code auch wie folgt vereinfachen:

>>> isinstance(u&#39;a&#39;, basestring)
True
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage