2011-02-15 29 views
79

Me pregunto cómo convertir un objeto de Python 'tipo' en una cadena utilizando las capacidades reflexivas del pitón.Convertir un objeto de Python 'tipo' a una cadena

Por ejemplo, me gustaría para imprimir el tipo de un objeto

print "My type is " + type(someObject) # (which obviously doesn't work like this) 

EDIT: Por cierto, gracias chicos, yo estaba buscando llanura de impresión de tipos para la salida de la consola, nada especial . type(someObject).__name__ obras de Gabi apenas muy bien :)

+1

¿Qué consideras que es el "tipo" de un objeto? ¿Y qué no funciona con lo que publicaste? – Falmarri

+0

Disculpas, tipo de impresión (someObject) realmente funciona :) –

Respuesta

125
print type(someObject).__name__ 

Si eso no le conviene, utilice esto:

print some_instance.__class__.__name__ 

Ejemplo:

class A: 
    pass 
print type(A()) 
# prints <type 'instance'> 
print A().__class__.__name__ 
# prints A 

Además, parece que hay diferencias con type() cuando se usan clases de estilo nuevo versus estilo antiguo (es decir, herencia de object). Para una clase de estilo nuevo, type(someObject).__name__ devuelve el nombre, y para las clases antiguas devuelve instance.

+0

Haciendo 'print (type (someObject))' imprimirá el nombre completo (es decir, incluyendo el paquete) – MageWind

6
>>> class A(object): pass 

>>> e = A() 
>>> e 
<__main__.A object at 0xb6d464ec> 
>>> print type(e) 
<class '__main__.A'> 
>>> print type(e).__name__ 
A 
>>> 

¿qué quieres decir con convert to a string? puede definir su propia repr y str métodos _:

>>> class A(object): 
    def __repr__(self): 
     return 'hei, i am A or B or whatever' 

>>> e = A() 
>>> e 
hei, i am A or B or whatever 
>>> str(e) 
hei, i am A or B or whatever 

o i no know..please añadir explicaciones sobre los defectos;)

+0

Btw. Creo que tu respuesta original tenía str (tipo (someObject)) que también fue útil –

2
print("My type is %s" % type(someObject)) # the type in python 

o ...

print("My type is %s" % type(someObject).__name__) # the object's type (the class you defined) 
Cuestiones relacionadas