A menudo, me parece que quiero un objeto simple, "volcado" en Python que se comporta como un objeto JavaScript (es decir, se puede acceder a sus miembros con .member
o con ['member']
).Objeto parecido a JavaScript en la biblioteca estándar de Python?
Por lo general, sólo voy a pegar esto en la parte superior de la .py
:
class DumbObject(dict):
def __getattr__(self, attr):
return self[attr]
def __stattr__(self, attr, value):
self[attr] = value
Pero eso es algo escaso, y hay al menos un error con el que la aplicación (aunque no puedo recordar lo que se es).
Entonces, ¿hay algo similar en la biblioteca estándar?
Y, para que conste, simplemente instanciando object
no funciona:
>>> obj = object() >>> obj.airspeed = 42 Traceback (most recent call last): File "", line 1, in AttributeError: 'object' object has no attribute 'airspeed'
Editar: (Dang, debería haber visto venir esto) ... No se preocupe! No estoy tratando de escribir JavaScript en Python. El lugar que encuentro con mayor frecuencia es el que quiero mientras sigo experimentando: tengo una colección de "cosas" que no me parece correcto poner en un diccionario, pero tampoco me siento bien al tener su propia clase .
Como dije a continuación, está intentando codificar los instintos incorrectos traídos de otro idioma. En Python, escribimos clases incluso cuando estamos "experimentando". Intente - deje de escribir DumbObject, escriba "clase Foo" y vea que no muerde. – moshez
Y, como dije a continuación ... Esa es una idea interesante, simplemente usar, por ejemplo, la clase Foo: velocidad del aire = 42 - No lo había considerado. Sin embargo, tiene el problema de que no se comporta como un diccionario (sí, hay __dict__ ...), lo que hace que la experimentación sea más difícil. –
Parece algo que todos queremos hacer con Python :) http://stackoverflow.com/questions/2466191/set-attributes-from-dictionary-in-python – OscarRyz