Articles of getattr

Cómo obtener valores de clave externa con getattr desde modelos

Tengo un Project modelo y obtengo los atributos de eso con el siguiente instr. attr = getattr(project, ‘id’, None) project es la instancia, id es el campo y None es el tipo de retorno predeterminado. mi pregunta es ¿qué pasa si quiero obtener las claves FK con esto? Obtener el nombre del cliente project.customer.name ¿Cómo […]

Cómo se pasan los argumentos a una función a través de __getattr__

Considere el siguiente ejemplo de código (python 2.7): class Parent: def __init__(self, child): self.child = child def __getattr__(self, attr): print(“Calling __getattr__: “+attr) if hasattr(self.child, attr): return getattr(self.child, attr) else: raise AttributeError(attr) class Child: def make_statement(self, age=10): print(“I am an instance of Child with age “+str(age)) kid = Child() person = Parent(kid) kid.make_statement(5) person.make_statement(20) se puede […]

¿Cómo lanzar la función getattr en python con parámetros adicionales?

Quiero llamar a alguna función desconocida agregando parámetros usando la función getattr. ¿Es posible?

Obtener dinámicamente los elementos dict a través de getattr?

Quiero consultar dinámicamente qué objetos de una clase me gustaría recuperar. getattr parece ser lo que quiero, y funciona bien para los objetos de nivel superior en la clase. Sin embargo, también me gustaría especificar subelementos. class MyObj(object): def __init__(self): self.d = {‘a’:1, ‘b’:2} self.c = 3 myobj = MyObj() val = getattr(myobj, “c”) print […]

__getattr__ equivalente para los métodos

Cuando no se encuentra un atributo, se llama al object.__getattr__ . ¿Hay una manera equivalente de interceptar métodos indefinidos?

¿Cómo puedo llegar a una variable privada dentro del objeto?

Me gustaría modificar una variable privada de objeto class Example(): __myTest1 = 1 __myTest2 = 1 def __init__(self): pass def modifyTest(self, name = ‘Test1’, value): setattr(self, ‘__my’+name, value); Intenté el código anterior y parece que no es posible alcanzar una variable privada, AttributeError: Example instance has no attribute ‘__myTest1’ ¿Hay alguna forma de modificar una […]

El método incorporado de Python Getattr ejecuta los argumentos por defecto.

No sé si este es un comportamiento esperado del método getattr built_in. getattr ejecuta el argumento predeterminado (3º), incluso si el argumento real (2º) cumple la condición. Ejemplo: def func(): print(‘In Function’) class A: def __init__(self): self.param = 12 a = A() Cuando ejecuto getattr(a, ‘param’, func()) da este resultado: In Function 12 Tenga en […]

¿Por qué no se llama a __getattr__ para operaciones de indexación?

Mi pregunta: Parece que __getattr__ no se llama para operaciones de indexación, es decir, no puedo usar __getattr__ en una clase A para proporcionar A[…] . ¿Hay alguna razón para esto? ¿O una forma de __getattr__ para que __getattr__ pueda proporcionar esa funcionalidad sin tener que definir explícitamente __getitem__ , __setitem__ , etc. en A […]

Python 2 __getattr__ máx profundidad de recursión

por ejemplo yo uso este código: class A(object): def __init__(self): self.dict1 = { ‘A’: 3, ‘B’: self.A} def __getattr__(self, key): if key in self.dict1: return self.dict1[key] a = A() y cuando se ejecuta, arroja una profundidad de recursión máxima excedida. ¿Puede alguien decirme qué estoy haciendo mal aquí?

Python – getattr y concatenación

Así que al jugar con getattr en mi código descubrí lo siguiente: myVariable = foo.A.bar Funciona … pero algo como esto: B = “A” myVariable = getattr(foo, B + “.bar”) devuelve un error que foo no contiene un atributo A.bar. ¿A dónde me voy mal? ¡Gracias!