Tôi tự hỏi liệu có thể thêm trường vào đối tượng một cách linh hoạt hay không. Ví dụ, tôi muốn có thể để thêm một cái gì đó như:Python: Thêm trường vào đối tượng động
user = object()
user.first_name = 'John'
user.last_name = 'Smith'
Khi tôi thực hiện điều đó bằng Python dòng lệnh thông dịch tôi nhận được:
AttributeError: 'object' object has no attribute 'first_name'
Bất kỳ ý tưởng?
Cảm ơn, mà làm việc cho tôi. Tôi có hai câu hỏi 1) Từ khóa 'pass' có ý nghĩa gì ở đây? 2) Nếu tôi có một thể hiện obj2 của Object() trong mã của tôi, sẽ obj.x tạo obj2.x (với một số giá trị không xác định)? – Rafid
1) Về 'pass': http://docs.python.org/tutorial/controlflow.html#pass-statements 2) Không, khi bạn làm' obj.x = 5', bạn chỉ thêm thuộc tính 'x' vào ví dụ đơn lẻ của 'Object'. Nếu bạn muốn tất cả các cá thể 'Object' chia sẻ x, bạn phải làm' Object.x = 5'. – gruszczy
Không có điều gì như một giá trị không xác định trong Python - gần nhất nó nhận được là 'None'. Các đối tượng được tạo theo cách mà gruszczy đề xuất không có bất kỳ loại "nguyên mẫu" nào; bạn có thể thêm và xóa các thuộc tính theo ý muốn, và nó không ảnh hưởng đến bất kỳ cá thể nào khác của lớp Object. –