Il existe deux fonctions de jugement de type en Python, type() et isinstance().
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 'int'> >>> type('str') <type 'str'> >>> type(None) <type 'NoneType'>
Si une variable pointe vers une fonction ou une classe, elle peut également être jugée par type() :
>>> type(abs) <type 'builtin_function_or_method'> >>> type(a) <class '__main__.Animal'>
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('a', str) True >>> isinstance(u'a', unicode) True >>> isinstance('a', 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('a', (str, unicode)) True >>> isinstance(u'a', (str, unicode)) True
Puisque str et unicode sont hérités de basestring, vous pouvez également simplifier le code ci-dessus pour :
>>> isinstance(u'a', 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!