¿Puedo agregar atributos de forma dinámica a las instancias de una clase de nuevo estilo (una derivada de object
)?Python: agregue dinámicamente atributos a la clase de estilo nuevo/obj
Detalles:
que estoy trabajando con una instancia de sqlite3.Connection. Simplemente extender la clase no es una opción porque no obtengo la instancia llamando a un constructor; Lo entiendo llamando al sqlite3.connect()
.
Crear un contenedor no me ahorra la mayor parte del código que estoy escribiendo.
Python 2.7.1
Editar
respuestas correctas todos. Pero todavía no estoy alcanzando mi objetivo; Las instancias de barra sqlite3.Connection mis intentos de establecer atributos de las siguientes maneras (como lo hacen las instancias de object
sí mismo). Siempre obtengo un AttributeError:
> conn = sqlite3.connect([filepath])
> conn.a = 'foo'
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
conn.a = 'foo'
AttributeError: 'object' object has no attribute 'a'
> conn.__setattr__('a','foo')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
conn.__setattr__('a','foo')
AttributeError: 'object' object has no attribute 'a'
¿Ayuda?
Puede examinar el __dict__ real para averiguar qué está usando sqlite3. Pero eso podría ser una rutina C, en cuyo caso se verá obligado a envolverlo de alguna manera. –
+1. Incluso 'objeto.__setattr __ (conn, 'a', 'foo') 'aumenta AttributeError. ¡Interesante pregunta! – EOL