Tôi đã viết một trình trang trí cần truy cập các biến riêng tư và tìm thấy sự khác biệt này. Bất cứ ai có thể giải thích điều này?Tên riêng "mang tên" mangling và thuộc tính lớp học vs
(Python 2.5)
đặt tên mangling công trình như mong đợi cho các thuộc tính được định nghĩa trong lớp:
thuộc tính Instance không làm việc (và đây là cách chúng ta có nghĩa vụ phải làm điều đó đúng không?)
>>> class Tester(object):
... def __init__(self):
... self.__foo = "hi"
>>> t = Tester()
>>> t._Tester__foo
AttributeError: 'Tester' object has no attribute '_Tester__foo'
PS "Thuộc tính lớp" có phải là từ thích hợp cho các thuộc tính này không? Họ không phải là tĩnh, nhưng nếu bạn thực hiện một trong những danh sách, hoặc một số loại có thể thay đổi khác, nó được chia sẻ ...
Cập nhật
Trong thực tế, ví dụ thứ hai hoạt động tốt, quá. Đó là một vấn đề phần cứng (khởi động lại đã giúp).
Thuộc tính lớp là từ đúng. Và họ luôn * chia sẻ. Tính đột biến không quan trọng. Nó khá nhiều không bao giờ vấn đề, ngoại trừ khi yêu cầu nếu bạn có thể đột biến một đối tượng nhất định. – delnan
Tôi có thể nuke câu hỏi này không? Hay có ai thấy giá trị trong việc giữ nó không? Tôi không thể tái tạo vấn đề ban đầu của mình. Dường như nó hoạt động như mong đợi. – Rafe
Thay vào đó hãy để nó xung quanh, vì @MartijnPieters đã đi tất cả các cách để kiểm tra vấn đề trong rất nhiều bài kiểm tra Python. – jsbueno