A dict
có thể sử dụng bất kỳ giá trị có thể băm nào làm khóa, trong khi trường hợp class
cần phải có chuỗi là mã định danh hợp pháp làm "khóa". Vì vậy, bạn có thể kết hợp dữ liệu tùy ý trong một số dict
.
Đó là khá phổ biến để sử dụng một lớp tầm thường như một thuận tiện hơn dict
khi giá trị quan trọng của bạn đều có chuỗi định danh hợp lệ anyway:
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))
Ngay khi bạn bắt đầu làm đúng thiết kế hướng đối tượng, và bạn có các hàm phương thức đi cùng với dữ liệu, bạn muốn có dữ liệu trong một lớp thích hợp để bạn có thể gộp các hàm của phương thức. Đó là hợp pháp để chỉ có một dict và một số hàm toàn cầu hoạt động trên đó, nhưng nếu tất cả đều có liên quan, chỉ cần gộp chúng thành một class
.
Và cuối cùng, lưu ý rằng dict
là khối xây dựng được sử dụng để triển khai class
. Nếu bạn lưu trữ các giá trị trong một lớp, chúng thực sự được lưu trữ bên trong một nội bộ dict
và chỉ có một số cú pháp thuận tiện để truy cập chúng.
print(x.a) # prints 1
print(x.__dict__["a"]) # does exact same thing as previous line
Liên quan đến [Python: Tôi có nên sử dụng lớp học hoặc từ điển không?] (Http://stackoverflow.com/questions/4045161/python-should-i-use-a-class-or-dictionary) và [Chuyển đổi Python dict thành đối tượng?] (http://stackoverflow.com/questions/1305532/convert-python-dict-to-object) – ChaimG