variable una tipos tipo texto pyarg_parsetuple numeros letras imprimir entrada defino datos cómo convertir python

una - variables en python 2



Convertir una cadena a nombres de variables preexistentes (4)

Podrías hacer algo como lo que Geo recomienda, o ir con:

>>> wine = ''pinot_noir'' >>> vars()[wine] = ''yum'' >>> pinot_noir ''yum''

Nota: vars () y globals () son lo mismo, estoy acostumbrado a usar vars (). ¡Me sorprende que nadie me haya llamado así! De todos modos, es vars() y locals() que son lo mismo.

¿Cómo convierto una cadena al nombre de la variable en Python ?

Por ejemplo, si el programa contiene un objeto llamado self.post que contiene una variable llamada, quiero hacer algo como:

somefunction("self.post.id") = |Value of self.post.id|


Además, existe la función globals () en Python que devuelve un diccionario con todas las variables definidas. También podrías usar algo como esto:

print globals()["myvar"]


Nota: no use eval en ningún caso donde obtenga el nombre para buscar desde la entrada ingresada por el usuario. Por ejemplo, si esto proviene de una página web, no hay nada que impida que alguien ingrese:

__import__("os").system("Some nasty command like rm -rf /*")

como el argumento Mejor es limitar a ubicaciones de búsqueda bien definidas, como un diccionario o una instancia utilizando getattr () . Por ejemplo, para encontrar el valor "publicar" en uno mismo, use:

varname = "post" value = getattr(self, varname) # Gets self.post

De forma similar a establecerlo, use setattr ():

value = setattr(self, varname, new_value)

Para manejar nombres completamente calificados , como "post.id", puede usar algo como las funciones a continuación en lugar de getattr () / setattr () .

def getattr_qualified(obj, name): for attr in name.split("."): obj = getattr(obj, attr) return obj def setattr_qualified(obj, name, value): parts = name.split(".") for attr in parts[:-1]: obj = getattr(obj, attr) setattr(obj, parts[-1], value)