Tôi đã rối tung với các thuộc tính động và tôi nhận thấy tôi không thể sử dụng thuộc tính __dict__ nếu tôi tạo đối tượng trực tiếp từ lớp object() nhưng nếu tôi tạo một lớp mới là một hậu duệ trực tiếp của đối tượng mà tôi có thể truy cập thuộc tính __dict__. Tại sao sự khác biệt?Trong Python khác biệt trong __dict__ giữa object() và class myClass (object)
Ví dụ:
# This gives an AttributeError o = object() o.__dict__
# This works: prints {}
class myClass(object):
pass
o = myClass()
o.__dict__
Việc không quan tâm đến '__dict__' trực tiếp hầu như không cần thiết và là một ý tưởng tồi. Tên thuộc tính động thường được thực hiện tốt hơn như các khóa từ điển, nhưng được chứng minh trong một vài trường hợp - nhưng bạn chỉ có thể sử dụng 'setattr' trong những trường hợp đó. – delnan