2009-02-06 11 views

Respuesta

133
instance.__class__.__name__ 

ejemplo:

>>> class A(): 
    pass 
>>> a = A() 
>>> a.__class__.__name__ 
'A' 
+36

Prefiero: 'tipo (ejemplo) .__ name__' – Chris

+2

¿Qué pasa si no desea crear una instancia de la clase? ¿Puedes obtener el nombre de la clase? (sin el objeto) – Gabriel

+12

Para la clase A, use lo siguiente: 'A .__ name__' – bk0

8

también puede crear un diccionario con las clases en sí como llaves, no necesariamente los nombres de las clases

typefunc={ 
    int:lambda x: x*2, 
    str:lambda s:'(*(%s)*)'%s 
} 

def transform (param): 
    print typefunc[type(param)](param) 

transform (1) 
>>> 2 
transform ("hi") 
>>> (*(hi)*) 

aquí es un diccionario que mapea una función para cada tipo. transform obtiene esa función y la aplica al parámetro.

por supuesto, sería mucho mejor utilizar programación orientada a objetos 'real'

+0

+1. Una prueba 'es' en el objeto de la clase en sí será más rápida que las cadenas y no se caerá con dos clases diferentes llamadas la misma cosa. – bobince

+0

Lamentablemente, esto no corresponde a las subclases, pero +1 a la sugerencia de OOP "real" y polimorfismo. –

Cuestiones relacionadas