Maison  >  Article  >  développement back-end  >  Comment vérifier le type d'un objet

Comment vérifier le type d'un objet

anonymity
anonymityoriginal
2019-05-25 15:10:484243parcourir

Il existe deux fonctions de jugement de type en Python, type() et isinstance().

Comment vérifier le type d'un objet

Utiliser type()

Tout d'abord, déterminons le type d'objet et utilisons la fonction type() :

Les types de base peuvent être jugés par type() :

>>> type(123)
<type &#39;int&#39;>
>>> type(&#39;str&#39;)
<type &#39;str&#39;>
>>> type(None)
<type &#39;NoneType&#39;>

Si une variable pointe vers une fonction ou une classe, elle peut également être jugée par type() :

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

Mais qu'est-ce que le Retour de la fonction type() ? Il renvoie le type de type.

Utilisez isinstance()

Pour les relations d'héritage de classe, il est très gênant d'utiliser type(). Pour déterminer le type de classe, nous pouvons utiliser la fonction isinstance().

Revoyons le dernier exemple. Si la relation d'héritage est :

object -> Animal -> Dog -> Husky

Alors isinstance() peut nous dire si un objet est d'un certain type. Créez d'abord trois types d'objets :

>>> a = Animal()
>>> d = Dog()
>>> h = Husky()

Ensuite, jugez :

>>> isinstance(h, Husky)
True

Il n'y a pas de problème, car la variable h pointe vers l'objet Husky.

Jugement :

>>> isinstance(h, Dog)
True

Bien que h lui-même soit de type Husky, puisque Husky hérite de Dog, h est également de type Dog. En d'autres termes, isinstance() détermine si un objet est du type lui-même ou s'il se trouve sur la chaîne d'héritage parent du type.

Par conséquent, nous pouvons être sûrs que h est toujours de type Animal :

>>> isinstance(h, Animal)
True

De même, d dont le type réel est Chien est également de type Animal :

>>> isinstance(d, Dog) and isinstance(d, Animal)
True

Cependant, d n'est pas de type Husky :

>>> isinstance(d, Husky)
False

Le type de base qui peut être jugé par type() peut également être jugé par isinstance() :

>>> isinstance(&#39;a&#39;, str)
True
>>> isinstance(u&#39;a&#39;, unicode)
True
>>> isinstance(&#39;a&#39;, unicode)
False

Et vous pouvez également juger si une variable est l'un de certains types, comme le suivant Vous pouvez utiliser le code pour déterminer s'il est str ou unicode :

>>> isinstance(&#39;a&#39;, (str, unicode))
True
>>> isinstance(u&#39;a&#39;, (str, unicode))
True

Puisque str et unicode sont hérités de basestring, vous pouvez également simplifier le code ci-dessus pour :

>>> isinstance(u&#39;a&#39;, basestring)
True

Puisque nous avons type() pour déterminer le type, pourquoi y a-t-il isinstance() ? Une différence évidente réside dans le jugement des sous-classes. type() ne considère pas une sous-classe comme un type parent. isinstance() considérera la sous-classe comme un type de classe parent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn