Diferenciar variable.

Arnau Sanchez arnau en ehas.org
Mie Nov 29 00:24:28 CET 2006


aNgel rEsendiz g. escribió:

> mmm, no se si todos se complicaron mucho o a mi se me esta escapando
> algo, pero creo que lo que quiere hacer sencillo:
> 
> type(variable)
> 
>>>> a='hola'
>>>> type(a)
> <type 'str'>
>>>> a=5
>>>> type(a)
> <type 'int'>
>>>>
> 
> ¿no es así?

Lo siento, no he seguido los otros mensajes del hilo, así que sólo te contesto 
sobre la diferencia entre isinstance y type; en un caso simple como el que 
teníamos se puede hacer también con type, es indiferente, pero considera algo 
más complejo, con clases derivadas:

class str2(str):
	pass

s = str2("hola")

type(s) == str
False

isinstance(s, str)
True

Y como en realidad lo queríamos saber es si el objeto s se comporta como una 
string, en este caso lo útil era "isinstance".

> supongo que lo que quieres hacer es verificar que se han ingresado
> solo numeros y no letras, si eso es lo que quieres, puedes hacerlo con
> una excepción:
> 
> try:
>    numero_capturado=int(texto_capturado)
> except ValueError:
>    regañar_al_usuario()

Así es, muchas veces lo mejor es tratar de convertir el dato y capturar la 
excepción, y dejarse de types e isinstances. En otras palabra: si camina como un 
pato, parpa como un pato, ¡tiene que ser un pato!

http://en.wikipedia.org/wiki/Duck_typing

arnau




Más información sobre la lista de distribución Python-es