6 Stimmen

Python: Ist es möglich, eine Instanz einer Kindklasse aus einer Instanz einer Elternklasse zu konstruieren?

Dies kann eine schreckliche Idee sein (fühlen Sie sich frei, mir zu sagen, wenn es ist), aber ich bin die Grenzen von Python zu erkunden, und ich könnte sehen, wie dies nützlich sein könnte (in der Tat, ich bin an einem potenziellen Fall für sie gerade jetzt).

Hier ist der Aufbau:

---(API-Datei)---

class APINode(object):
    def __init__(self, *args, **kwargs):
        # initialize some instance variables

    def render(self, arg1, arg2):
        # do some stuff and return something

def api_function( arg1, arg2 ):
    # do some stuff
    return APINode(args, kwargs)

---- (Meine Datei) ----

class MyNode(APINode):
    def render(self, arg1, arg2):
        #My override of APINode's render 

def my_function( arg1, arg2 ):
    api_parent_instance = api_function( arg1, arg2 )
    #Can I some how create an instance of MyNode from api_parent_instance here?

Ich möchte die Ausgabe der api_function geringfügig ändern, im Grunde nur die Render-Funktion in das Objekt überschreiben es zurückgibt. Ich fühle mich wie meine Optionen sind: (1, igitt), um den Inhalt von api_function in my_function zu kopieren, aber nur konstruieren und zurückgeben ein MyNode anstelle eines APINode, oder (2, vielleicht?) nur api_function von my_function aufrufen, lassen Sie seine Arbeit tun--konstruieren und zurückgeben ein Objekt des Typs APINode, und dann kann ich irgendwie erstellen ein MyNode aus diesem Objekt, um diese eine Methode zu überschreiben.

Es läuft auf Folgendes hinaus: Ist es in Python möglich, eine Instanz einer untergeordneten Klasse aus einer Instanz einer übergeordneten Klasse zu konstruieren?

(Kommt Ihnen das bekannt vor oder fragen Sie sich, was der eigentliche Fall ist? Ich versuche, ein Django-Template-Tag zu erweitern).

0voto

Polosky Punkte 88

Ich denke, Sie sollten sich die Superklasse oder etwas Ähnliches ansehen. Es ist wie, a = obj. _ Klasse _ () Ich kann mich nicht mehr genau erinnern, aber Sie sollten in den Python-Dokumenten nachsehen.

Es sei denn, das wollen Sie gar nicht. Aber die obj. _ Klasse _ () sollte ein neues Objekt der gleichen Klasse erzeugen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X