Vererben von einer Instanz in Python

In Python möchte ich eine Instanz der Child-Klasse direkt aus einer Instanz der Parent-Klasse erstellen. Zum Beispiel:

A = Parent(x, y, z)
B = Child(A)

Dies ist ein Hack, von dem ich dachte, dass er funktionieren könnte:

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)

Aber wenn ich renne

B = Child(A) 

Ich bekomme:

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) 

Es scheint, dass der Hack so funktioniert, wie ich es erwartet habe, aber der Compiler löst am Ende einen TypeError aus. Ich habe mich gefragt, ob ich TypeError überladen kann, damit es das B = Child (A) -Idiom ignoriert, aber ich war mir nicht sicher, wie ich das machen soll. Würden Sie mir bitte auf jeden Fall Ihre Lösungen für das Erben von Instanzen geben?

Vielen Dank!

Antworten auf die Frage(7)

Ihre Antwort auf die Frage