A dict
puede usar cualquier valor hashable como clave, mientras que una instancia class
necesita tener cadenas que son identificadores legales como sus "claves". Entonces puede agrupar datos arbitrarios en un dict
.
Es bastante común el uso de una clase trivial como un más-conveniente dict
cuando sus valores clave serán todos cadenas válidas identificador de todos modos:
class Box:
pass
x = Box()
x.a = 0
x.b = 1
d = {}
d["a"] = 0 # "x.a" is easier to type than this
d["b"] = 1
print("Current value for 'a' is: {}".format(x.a))
Tan pronto como empiece a hacer un diseño adecuado orientado a objetos, y tiene funciones de método que van junto con los datos, desea tener los datos en una clase adecuada para que pueda agrupar las funciones del método. Es legal tener solo un dict y un puñado de funciones globales que operen en él, pero si todos están relacionados, simplemente tiene sentido agruparlos en un class
.
Y, por último, tenga en cuenta que un dict
es un bloque de construcción que se utiliza para implementar un class
. Si almacena valores en una clase, en realidad están almacenados dentro de un dict
interno y solo hay alguna sintaxis conveniente para acceder a ellos.
print(x.a) # prints 1
print(x.__dict__["a"]) # does exact same thing as previous line
relacionada a [Python:? ¿Debo usar una clase o diccionario] (http://stackoverflow.com/questions/4045161/python-should-i-use-a-class-or-dictionary) y para [Convertir Python Dict a Object?] (http://stackoverflow.com/questions/1305532/convert-python-dict-to-object) – ChaimG