Saltar al contenido

¿Cómo puedo obtener el nombre de un objeto en Python?

Tenemos la mejor respuesta que hemos encontrado on line. Nosotros queremos que te sirva de ayuda y si puedes aportar alguna mejora hazlo con libertad.

Solución:

Los objetos no necesariamente tienen nombres en Python, por lo que no puede obtener el nombre.

No es raro que los objetos tengan un __name__ attribute en esos casos, tienen un nombre, pero esto no es parte de Python estándar, y la mayoría de los tipos integrados no tienen uno.

Cuando creas una variable, como la x, y, z arriba, esos nombres solo actúan como “punteros” o “referencias” a los objetos. El objeto en sí mismo no sabe qué nombre está usando para él, y no puede obtener fácilmente (si es que lo hace) los nombres de todas las referencias a ese objeto.

Actualización: Sin embargo, las funciones tienen un __name__ (a menos que sean lambdas) entonces, en ese caso puedes hacer:

dict([(t.__name__, t) for t in fun_list])

Eso no es realmente posible, ya que podría haber múltiples variables que tengan el mismo valor, o un valor podría no tener variable, o un valor podría tener el mismo valor que una variable solo por casualidad.

Si realmente quieres hacer eso, puedes usar

def variable_for_value(value):
    for n,v in globals().items():
        if v == value:
            return n
    return None

Sin embargo, sería mejor si iteraras sobre los nombres en primer lugar:

my_list = ["x", "y", "z"] # x, y, z have been previously defined

for name in my_list:
    print "handling variable ", name
    bla = globals()[name]
    # do something to bla

Este one-liner funciona, para todo tipo de objetos, siempre y cuando estén en globals() dict, que deberían ser:

def name_of_global_obj(xx):
    return [objname for objname, oid in globals().items()
            if id(oid)==id(xx)][0]

o equivalente:

def name_of_global_obj(xx):
    for objname, oid in globals().items():
        if oid is xx:
            return objname

Aquí tienes las reseñas y puntuaciones

Si guardas algún reparo o disposición de ascender nuestro división te proponemos dejar una aclaración y con mucho placer lo analizaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *