¿Cómo establece / obtiene los valores de los atributos de tdado por x?
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
python
object
attributes
Poeta nulo
fuente
fuente

df1y una variable,x = 'df1'es decir, df1 como una cadena en var x? Quiero imprimir la forma de df como esta,getattr(x, 'shape')ogetattr('df1', 'shape'). Sé que esto no se puede hacer con getattr, ningún otro método.getattr(globals()[x], 'shape')Nota: esta respuesta está muy desactualizada. Se aplica a Python 2 usando el
newmódulo que fue desaprobado en 2008 .Hay python integrado en las funciones setattr y getattr. Que puede usarse para establecer y obtener el atributo de una clase.
Un breve ejemplo:
fuente
Si desea mantener la lógica oculta dentro de la clase, puede preferir usar un método getter generalizado como este:
Salidas:
Otro enfoque que podría ocultarlo aún mejor sería usar el método mágico
__getattribute__, pero seguía obteniendo un bucle interminable que no podía resolver cuando intentaba recuperar el valor del atributo dentro de ese método.También tenga en cuenta que puede utilizar alternativamente
vars(). En el ejemplo anterior, podría intercambiargetattr(self,varname)porreturn vars(self)[varname], perogetattrpodría ser preferible según la respuesta a ¿Cuál es la diferencia entrevarsysetattr? .fuente