मेरे पास एक कक्षा है जो कई अन्य वर्गों के लिए एक सुपर-क्लास है। मुझे लगता है मैं एक वर्ग विधि के साथ यह पूरा करने की कोशिश की पता (मेरी सुपर वर्ग के init() में करना चाहते हैं तो उपवर्ग एक विशिष्ट विधि अधिरोहित हैपायथन में उपclasses में विधि अधिभार का पता लगाने के लिए कैसे?
, लेकिन परिणाम गलत थे:।
class Super:
def __init__(self):
if self.method == Super.method:
print 'same'
else:
print 'different'
@classmethod
def method(cls):
pass
class Sub1(Super):
def method(self):
print 'hi'
class Sub2(Super):
pass
Super() # should be same
Sub1() # should be different
Sub2() # should be same
>>> same
>>> different
>>> different
वहाँ एक सुपर वर्ग जानना चाहते हैं कि एक उप-वर्ग एक विधि अधिरोहित है के लिए कोई तरीका है?
की जा सकी:
और यहाँ उत्पादन है आप कुछ शब्द कहते हैं * क्यों * आप ऐसा करना चाहते हैं? – NPE
कुछ भी तुरंत दिमाग में नहीं आता है, लेकिन यदि आप अपनी विधियों के लिए दस्तावेज़ों को शामिल करते हैं, तो विधि ओवरराइड होने पर वे ओवरराइट हो जाते हैं। इसलिए आपको इसे 'MyClass.methodname .__ doc__' के साथ ट्रैक करने में सक्षम होना चाहिए।लेकिन मुझे यह समाधान बहुत हैक होने का पता चला है, यही कारण है कि मैं इसे उत्तर के रूप में पोस्ट नहीं कर रहा हूं – inspectorG4dget
असल में मैं चाहता हूं कि सुपर-क्लास में इन विधियों को केवल 'पास' के रूप में परिभाषित किया गया हो और एक अलग विधि (वास्तव में __init__) इन कार्यों को बुलाओ। मैं प्रिंट स्टेटमेंट्स में इनिट रखना चाहता हूं जो कहता है कि हम फ़ंक्शन शुरू या समाप्त कर रहे हैं, लेकिन यदि यह फ़ंक्शन अभी भी शून्य है, तो ये कथन जगह से बाहर दिखते हैं, और मैं उनके साथ हटना चाहता हूं। – Brian