में उदाहरण से विरासत पाइथन में, मैं सीधे बाल वर्ग के उदाहरण से बाल वर्ग का एक उदाहरण बनाना चाहता हूं। उदाहरण के लिए:पायथन
A = Parent(x, y, z)
B = Child(A)
यह एक हैक है कि मैंने सोचा था कि काम हो सकता है है:
class Parent(object):
def __init__(self, x, y, z):
print "INITILIZING PARENT"
self.x = x
self.y = y
self.z = z
class Child(Parent):
def __new__(cls, *args, **kwds):
print "NEW'ING CHILD"
if len(args) == 1 and str(type(args[0])) == "<class '__main__.Parent'>":
new_args = []
new_args.extend([args[0].x, args[0].y, args[0].z])
print "HIJACKING"
return Child(*new_args)
print "RETURNING FROM NEW IN CHILD"
return object.__new__(cls, *args, **kwds)
लेकिन जब मैं
B = Child(A)
चलाने मैं:
NEW'ING CHILD
HIJACKING
NEW'ING CHILD
RETURNING FROM NEW IN CHILD
INITILIZING PARENT
Traceback (most recent call last):
File "classes.py", line 52, in <module>
B = Child(A)
TypeError: __init__() takes exactly 4 arguments (2 given)
ऐसा लगता है हैक काम करता है जैसा कि मैंने उम्मीद की थी लेकिन संकलक एक टी फेंकता है अंत में ypeError। मैं सोच रहा था कि क्या मैं बी = चाइल्ड (ए) मुहावरे को अनदेखा करने के लिए TypeError को अधिभारित कर सकता हूं लेकिन मुझे यकीन नहीं था कि यह कैसे करें। किसी भी मामले में, क्या आप कृपया उदाहरणों से विरासत के लिए अपने समाधान दें?
धन्यवाद!
बस एक एफवाईआई, "प्रारंभिक" में 'ए' के साथ लिखा गया है। इसे संपादित करने का प्रयास किया लेकिन StackOverflow 6 अक्षरों से कम संपादन की अनुमति नहीं देगा। – cfwschmidt