Comment vérifier le type d'un objet

anonymity
Libérer: 2019-05-25 15:10:48
original
4244 Les gens l'ont consulté

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;>
Copier après la connexion

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;>
Copier après la connexion

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
Copier après la connexion

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()
Copier après la connexion

Ensuite, jugez :

>>> isinstance(h, Husky)
True
Copier après la connexion

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

Jugement :

>>> isinstance(h, Dog)
True
Copier après la connexion

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
Copier après la connexion

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

>>> isinstance(d, Dog) and isinstance(d, Animal)
True
Copier après la connexion

Cependant, d n'est pas de type Husky :

>>> isinstance(d, Husky)
False
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal