में "निजी" विधि के रूप में एक "निजी" विधि के साथ एक वर्ग पर विचार करें:ओवरराइड अजगर
class Foo(object):
def __init__(self):
self.__method()
def __method(self):
print('42')
जब मैं Foo
और ओवरराइड विधि __method
उपवर्ग करने की कोशिश, यह देखा जा सकता है कि Foo.__method
अभी भी कहा जाता है, MoreFoo.__method
के बजाय।
class MoreFoo(Foo):
def __method(self):
print('41')
>>> MoreFoo()
42
<__main__.MoreFoo object at 0x7fb726197d90>
ऐसी विधि को ओवरराइड करने का तरीका क्या होगा?
http://stackoverflow.com/questions/1301346/the-meaning-of-a-single-and-a-double-underscore-before-an-object-name-in-python – tacaswell
ब्याज से, जहां क्या आपको यह विचार आया कि यह एक निजी चर के बराबर था? यह वास्तव में एक बुरी गलत धारणा है, और मैं इसे हर समय देखता हूं, यह नहीं जानता कि यह कहां से आता है। –
@ लैटवेयर - मुझे लगता है कि यह "निजी चर और कक्षा-स्थानीय संदर्भ" नामक दस्तावेज़ों के अनुभाग से आता है। यह कहता है कि कोई निजी चर नहीं है ... लेकिन डबल अंडरस्कोरिंग चीज सबसे नज़दीक है जिसे आप प्राप्त कर सकते हैं - "चूंकि कक्षा-निजी सदस्यों के लिए वैध उपयोग-मामला है (अर्थात् नामों के नामों से बचने के लिए subclasses द्वारा परिभाषित नामों के साथ), इस तरह के एक तंत्र के लिए सीमित समर्थन है, ... " – mgilson