2009-02-07 6 views
1

Comment puis-je savoir si le obj retourné par une func est un int ou quelque chose d'autre (comme un curseur sqlite)python, comment dire quel type de obj a été retourné

+0

Pourquoi auriez-vous besoin de le savoir? Veuillez fournir un contexte dans lequel vous essayez de comprendre le type. Peut-être un aperçu du code que vous aimeriez écrire. –

+0

Il existe certainement des raisons valables de vérifier le type d'un objet en Python. Un échantillon de code ne fait jamais mal, bien sûr. –

+1

@David - la vérification de type est souvent une erreur maladroite mieux résolue par le polymorphisme. Les exemples de code peuvent aider à fournir une meilleure solution qui évite entièrement la vérification de type. –

Répondre

12

Utilisation isinstance(item, type) - par exemple:

if isinstance(foo, int): 
    pass # handle this case 

Cependant, la vérification de type explicite est pas considérée comme une bonne pratique dans le monde Python - cela signifie qu'une grande partie de la puissance de frappe de canard est perdu: Quelque chose qui marche et caquette comme un canard devraient être autorisés à être canard, même si ce n'est pas le cas! :)

+0

Il s'appelle isinstance() en Python –

+0

Yup, attrapé moi-même - le réparait comme vous avez répondu. –

-1

Utilisez la fonction "type" intégrée, par ex. tapez (10) ->.

+0

L'utilisation de type() pour vérifier l'égalité signifie que les instances d'une sous-classe ne sont pas reconnues, donc ce n'est généralement pas la bonne chose. –

+0

Ouais, désolé, vous avez raison, isinstance est le meilleur choix. – Johan

+0

Eh bien, généralement oui. Très rarement, vous voulez toujours taper() ... difficile d'appeler sans aucun contexte. Je ne connais aucune API qui utilise une variante qui pourrait être un curseur int ou SQLite! – bobince

Questions connexes