Articles of getattr

Enfoque de PHP a la magia de python __getattr __ ()

Me preguntaba si había alguna forma en PHP para duplicar parte de la magia del acceso a atributo / clave de Python. Utilizo una clase de ORM de Mongo escrita por Steve Lacey llamada Minimongo en la que utiliza el __getattr__ y el __getitem__ para redireccionar el acceso con clave y atributo y preservar la […]

Python usando getattr para llamar a la función con parámetros variables

Estoy usando getattr para llamar a diferentes funciones dependiendo de una variable. Estoy haciendo algo así: getattr(foo, bar) () Eso funciona, llamando a funciones como foo.bar () Mi problema es que tengo funciones de ‘barra’ y quiero llamarlo con diferentes parámetros. Por ejemplo: def f1() : pass def f2(param1) : pass def f3(param1,param2) : pass […]

¿Cómo manejar y devolver las propiedades Y funciones que faltan en una clase de Python usando la función __getattr__?

Es bastante fácil usar el método especial __getattr__ en las clases de Python para manejar propiedades o funciones faltantes, pero aparentemente no ambas al mismo tiempo. Considere este ejemplo que maneja cualquier propiedad solicitada que no esté definida explícitamente en ninguna otra parte de la clase … class Props: def __getattr__(self, attr): return ‘some_new_value’ >>> […]

¿Es una mala práctica usar getattr de Python extensamente?

Estoy creando un entorno tipo shell. Mi método original para manejar la entrada del usuario era usar un diccionario de comandos de mapeo (cadenas) a métodos de varias clases, haciendo uso del hecho de que las funciones son objetos de primera clase en Python. Por el bien de la flexibilidad (principalmente para los comandos de […]

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 […]