सभी एक निश्चित आधार वर्ग से व्युत्पन्न वर्ग एक विशेषता "पथ" कहा जाता है परिभाषित करने के लिए किया है। बतख टाइपिंग के अर्थ में मैं उपवर्गों में परिभाषा पर भरोसा कर सकते हैं:बेस क्लास कन्स्ट्रक्टर को पैरामीटर पास करना या इंस्टेंस वैरिएबल का उपयोग करना?
class Base:
pass # no "path" variable here
def Sub(Base):
def __init__(self):
self.path = "something/"
एक और possiblity आधार वर्ग निर्माता का उपयोग करने के होगा:
class Base:
def __init__(self, path):
self.path = path
def Sub(Base):
def __init__(self):
super().__init__("something/")
मैं अजगर 3.1 का उपयोग करें।
आप क्या पसंद करते हैं और यही कारण है कि होगा? क्या कोई बेहतर तरीका है?
वहाँ 'सुपर के बारे में कुछ भी नहीं है कमजोर()'। नाजुकता 2.x वाक्यविन्यास में है, जिसे 3.x में तय किया गया है (जिसे ओपी उपयोग कर रहा है, जैसा कि 'सुपर()' कॉल द्वारा दिखाया गया है), और सामान्य रूप से एकाधिक विरासत। पाइथन 3.x में सीधे बेसक्लास विधि को कॉल करने का कोई कारण नहीं है, 'सुपर() .__ init (...)' वाक्यविन्यास कभी भी खराब नहीं होता है और अक्सर बेहतर होता है। –
'super' के उपयोग के द्वारा पहचानने, मुझे लगता है चाहते हैं कि deamon @Thomas Wouters py3k – SilentGhost
उपयोग कर रहा है: कैसे आप सुपर प्रयोग करेंगे यदि आप अलग अलग निर्माता हस्ताक्षरों के साथ सभी एकाधिक वंशानुक्रम और आधार वर्ग? व्युत्पन्न कक्षाओं के सभी तर्कों को सभी आधार वर्गों में पास करना एक गंदे हैक जैसा दिखता है, नामित पैरामीटर पर निर्भर करता है और बेस क्लास को जो कुछ चाहिए उसे हल करने देता है, वह बहुत अच्छा नहीं है। – kriss