में प्रत्यक्ष तत्कालता से कक्षा को रोकना मेरे पास एक ऐसी विधि है जिसमें अन्य विधियां हैं जिन्हें केवल उप-वर्गों में परिभाषित किया गया है। यही कारण है कि, जब मैं अपनी सुपर क्लास का उदाहरण बनाता हूं और अपनी विधि को कॉल करता हूं, तो यह विधि नहीं ढूंढ सकता है और एक त्रुटि उठाता है।पायथन
यहाँ एक उदाहरण है:
class SuperClass(object):
def method_one(self):
value = self.subclass_method()
print value
class SubClassOne(SuperClass):
def subclass_method(self):
return 'subclass 1'
class SubClassTwo(SuperClass):
def subclass_method(self):
return 'nubclass 2'
s1 = SubClassOne()
s1.method_one()
s2 = SubClassTwo()
s2.method_one()
c = SuperClass()
c.method_one()
# Results:
# subclass 1
# nubclass 2
# Traceback (most recent call last):
# File "abst.py", line 28, in <module>
# c.method_one()
# File "abst.py", line 4, in method_one
# value = self.subclass_method()
# AttributeError: 'SuperClass' object has no attribute 'subclass_method'
मैं init सुपर वर्ग के बदल रहा है और, ऑब्जेक्ट का प्रकार सत्यापित करें जब एक नया उदाहरण बन जाता है के बारे में सोच रहा था। यदि वस्तु सुपर क्लास से संबंधित है तो एक त्रुटि उठाएं। हालांकि, मुझे यकीन नहीं है कि यह करने का पाइथोनिक तरीका है या नहीं।
कोई सिफारिशें?
पाइथोनिक तरीका अच्छी प्रलेखन लिखना है कि आपकी कक्षा का उपयोग कैसे किया जाए। – yak
@chown: यह वास्तव में सी ++ में अक्सर किया जाता है। वह क्या कर रहा है अनिवार्य रूप से आभासी तरीकों को बुला रहा है। उनके साथ स्वाभाविक रूप से गलत कुछ भी नहीं है, अगर वे समस्या का उचित समाधान हैं। – rossipedia
मैं इस बात से सहमत हूं कि यह बहुत पाइथनिक नहीं है – rossipedia