Articles of getattr

__getattr__ para variables estáticas / de clase en python

Tengo una clase como: class MyClass: Foo = 1 Bar = 2 Siempre que se invoca MyClass.Foo o MyClass.Bar , necesito que se invoque un método personalizado antes de que se devuelva el valor. ¿Es posible en Python? Sé que es posible si creo una instancia de la clase y puedo definir mi propio método […]

Comportamiento asimétrico para __getattr__, newstyle vs oldstyle classes

esta es la primera vez que escribo aquí, disculpe si el mensaje no está enfocado o es demasiado largo. Me interesaba comprender más acerca de cómo se obtienen los atributos de los objetos cuando es necesario. Así que leí la documentación de Python 2.7 titulada “Modelo de datos” aquí , conocí a __getattr__ y, para […]

Cómo usar __setattr__ correctamente, evitando la recursión infinita

Quiero definir una clase que contenga método de read y write , que se puede llamar de la siguiente manera: instance.read instance.write instance.device.read instance.device.write Para no usar clases entrelazadas, mi idea era sobrescribir los métodos __getattr__ y __setattr__ y verificar, si el nombre dado es device para redirigir el retorno a self . Pero me […]

El objeto ‘super’ no llama a __getattr__

Tengo un objeto envuelto dentro de otro. El “Wrapper” accede a los atributos del objeto “Wrapped” al reemplazar __getattr__ . Esto funciona bien hasta que necesito anular un atributo en una subclase y luego acceder al atributo desde la clase base usando super() . Todavía puedo acceder al atributo directamente desde __getattr__ pero ¿por qué […]

¿Cómo interceptar llamadas de método de instancia?

Estoy buscando una forma de interceptar las llamadas a métodos de instancia en la clase MyWrapper continuación: class SomeClass1: def a1(self): self.internal_z() return “a1” def a2(self): return “a2” def internal_z(self): return “z” class SomeClass2(SomeClass1): pass class MyWrapper(SomeClass2): # def INTERCEPT_ALL_FUNCTION_CALLS(): # result = Call_Original_Function() # self.str += result # return result def __init__(self): self.str = […]

obteniendo atributo dynamic en python

Tengo un objeto con un pseudo o atributo especial que se puede nombrar de tres maneras diferentes (Nota: no controlo el código que genera el objeto) El valor en los atributos (dependiendo de cuál se establece) es exactamente el mismo, y necesito obtener eso para un procesamiento adicional, por lo que, dependiendo de la fuente […]

Cómo iterar a través de las funciones de un módulo

Tengo esta llamada de función después de importar foo.py. Foo tiene varios métodos que necesito llamar, por ejemplo, foo.paint, foo.draw: import foo code if foo: getattr(foo, ‘paint’)() Necesito usar un bucle while para llamar e iterar a través de todas las funciones foo.paint, foo.draw, etc. ¿Cómo lo hago?

¿Acceso recursivo dict a través de atributos, así como el acceso al índice?

Me gustaría poder hacer algo como esto: from dotDict import dotdictify life = {‘bigBang’: {‘stars’: {‘planets’: []} } } dotdictify(life) # This would be the regular way: life[‘bigBang’][‘stars’][‘planets’] = {‘earth’: {‘singleCellLife’: {}}} # But how can we make this work? life.bigBang.stars.planets.earth = {‘singleCellLife’: {}} #Also creating new child objects if none exist, using the following […]

¿Cómo invalido __getattr__ en Python sin romper el comportamiento predeterminado?

Quiero anular el método __getattr__ en una clase para hacer algo sofisticado, pero no quiero romper el comportamiento predeterminado. ¿Cuál es la forma correcta de hacer esto?

Entendiendo la diferencia entre __getattr__ y __getattribute__

Estoy tratando de entender la diferencia entre __getattr__ y __getattribute__ , sin embargo, estoy fallando en eso. La respuesta a la pregunta de Desbordamiento de stack Diferencia entre __getattr__ vs __getattribute__ dice: __getattribute__ se invoca antes de mirar los atributos reales en el objeto, por lo que puede ser difícil de implementar correctamente. Puedes terminar […]