Ein dict
kann einen beliebigen Hashwert als Schlüssel verwenden, während eine class
Instanz Zeichenfolgen haben muss, die als "Schlüssel" eine rechtliche Kennung darstellen. So können Sie beliebige Daten in einem dict
bündeln.
Es ist ziemlich üblich, eine triviale Klasse als eine mehr bequem dict
zu verwenden, wenn Sie Ihre Schlüsselwerte alle gültigen Bezeichner Strings sowieso sein wird:
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))
Sobald Sie die richtige objektorientiertes Design zu tun zu starten, und Sie haben Methodenfunktionen, die mit den Daten einhergehen, Sie möchten die Daten in einer geeigneten Klasse haben, damit Sie die Methodenfunktionen bündeln können. Es ist legal, nur ein Diktat und eine Handvoll globaler Funktionen zu haben, die darauf angewendet werden, aber wenn Sie sind alle verwandt, es macht nur Sinn, sie in eine class
zu bündeln.
Und schließlich, ein dict
ist ein Baustein, der verwendet wird, um eine class
zu implementieren. Wenn Sie Werte in einer Klasse speichern, werden sie tatsächlich in einem internen dict
gespeichert und es gibt nur eine bequeme Syntax, um auf sie zuzugreifen.
print(x.a) # prints 1
print(x.__dict__["a"]) # does exact same thing as previous line
Related to [Python:? Soll ich eine Klasse oder ein Wörterbuch verwenden] (http://stackoverflow.com/questions/4045161/python-should-i-use-a-class-or-dictionary) und zu [Python dict in Objekt konvertieren?] (http://stackoverflow.com/questions/1305532/convert-python-dict-to-object) – ChaimG