Tôi đang gặp sự cố khi triển khai borg trong python. Tôi tìm thấy một ví dụ trong một câu trả lời cho this question nhưng nó không làm việc cho tôi, trừ khi tôi đang thiếu một cái gì đó. Đây là mã:Vấn đề mẫu borg Python
class Config:
"""
Borg singleton config object
"""
__we_are_one = {}
__myvalue = ""
def __init__(self):
#implement the borg pattern (we are one)
self.__dict__ = self.__we_are_one
self.__myvalue = ""
def myvalue(self, value=None):
if value:
self.__myvalue = value
return self.__myvalue
conf = Config()
conf.myvalue("Hello")
conf2 = Config()
print conf2.myvalue()
Tôi cho rằng điều này có nghĩa là in "Hello", nhưng đối với tôi, nó chỉ in một dòng trống. Vài ý tưởng tại sao nó như thế?
Tại sao bạn sử dụng tên __ gấp đôi cho thuộc tính của mình? Một đơn hàng đầu _ sẽ làm để làm cho nó "riêng tư". –
Tôi đã sao chép mã từ câu hỏi khác mà tôi đã liên kết đến. Nhưng dù sao, tôi nghĩ rằng một _ đơn gợi ý rằng nó là riêng tư, trong khi một _ đôi gây ra tên mangling mà là một gợi ý mạnh mẽ hơn rằng nó * thực sự * là riêng tư, mặc dù nó vẫn có thể được truy cập nếu người dùng được xác định. – chrism1
Không! Các dấu gạch dưới hàng đầu sẽ KHÔNG làm cho chúng riêng tư, chỉ làm cho nó sao cho các biến cấp mô-đun không được nhập vào 'từ foo import *' Nếu không, nó không có tác dụng khác với 'gợi ý' ở tính riêng tư. –