मुझे अजगर में एक बोर्ग को लागू करने में समस्याएं आ रही हैं। मुझे this question के उत्तर में एक उदाहरण मिला लेकिन यह मेरे लिए काम नहीं कर रहा है, जब तक कि मुझे कुछ याद नहीं आ रहा है। यहां कोड है:पायथन बोर्ग पैटर्न समस्या
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()
मुझे लगता है कि यह "हैलो" प्रिंट करने के लिए है, लेकिन मेरे लिए यह सिर्फ एक खाली रेखा प्रिंट करता है। कोई विचार यह क्यों हो सकता है?
आप अपने गुणों के लिए डबल __ नाम क्यों उपयोग कर रहे हैं? एक अग्रणी अग्रणी _ इसे "निजी" बनाने के लिए करेगा। –
वैसे मैंने कोड को दूसरे प्रश्न से कॉपी किया है जिसे मैंने लिंक किया था। लेकिन वैसे भी, मैंने सोचा कि एक सिंगल _ संकेत है कि यह निजी है, जबकि एक डबल _ नाम का नाम बदलता है जो एक मजबूत संकेत है कि यह वास्तव में निजी है, हालांकि उपयोगकर्ता को निर्धारित होने पर इसे अभी भी एक्सेस किया जा सकता है। – chrism1
नहीं! एकल अग्रणी अंडरस्कोर उन्हें निजी नहीं बनाएगा, केवल इसे बनायेगा ताकि मॉड्यूल स्तर चर 'foo import * से' आयात नहीं किए जा सकें अन्यथा, इसका गोपनीयता पर 'संकेत' के अलावा कोई प्रभाव नहीं पड़ता है। –