¿Cómo establece / obtiene los valores de los atributos de t
dado por x
?
class Test:
def __init__(self):
self.attr1 = 1
self.attr2 = 2
t = Test()
x = "attr1"
python
object
attributes
Poeta nulo
fuente
fuente
df1
y 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
new
mó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]
, perogetattr
podría ser preferible según la respuesta a ¿Cuál es la diferencia entrevars
ysetattr
? .fuente