Heim  >  Artikel  >  Backend-Entwicklung  >  So überprüfen Sie den Typ eines Objekts

So überprüfen Sie den Typ eines Objekts

anonymity
anonymityOriginal
2019-05-25 15:10:484227Durchsuche

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;>

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;>

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

Stellungnahme:
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