Einbinden von Unterfunktionen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
riven
User
Beiträge: 35
Registriert: Mittwoch 27. September 2006, 23:01

Einbinden von Unterfunktionen

Beitragvon riven » Freitag 3. November 2006, 16:05

Halloo,

ich habe zwei python-programme mit den namen alpha.py und beta.py .

in alpha.py setze ich eine variable, die eine in c++ geschriebene routine aufruft. beta.py greift ebenfalls auf diese routine zu. genau hier liegt das problem. wenn erneut auf diese liste zugegriffen wird, wird ein reset ausgeführt. lösche ich den aufruf zur liste weg, erkennt python die listenelemente nicht mehr, wenn sie in beta. py aufgerufen werden.

wie kann ich dafür sorgen, dass beta.py so in alpha.py eingebunden wird, ohne dass erneut auf die liste zugegriffen werden muss?

anders ausgefrückt, wie sorge ich dafür, dass der inhalt von beta.py einfach angefügt wird, als hätte ich alles an einem stück geschrieben ?

danke
BlackJack

Re: Einbinden von Unterfunktionen

Beitragvon BlackJack » Freitag 3. November 2006, 20:04

riven hat geschrieben:in alpha.py setze ich eine variable, die eine in c++ geschriebene routine aufruft.


Eine Variable ruft eine Funktion auf?

beta.py greift ebenfalls auf diese routine zu. genau hier liegt das problem. wenn erneut auf diese liste zugegriffen wird, wird ein reset ausgeführt.


Was denn nun externe Funktion oder Liste?

lösche ich den aufruf zur liste weg, erkennt python die listenelemente nicht mehr, wenn sie in beta. py aufgerufen werden.


Aufruf zur Liste? Listenelemente werden von `beta.py` aus aufgerufen?

wie kann ich dafür sorgen, dass beta.py so in alpha.py eingebunden wird, ohne dass erneut auf die liste zugegriffen werden muss?


?

anders ausgefrückt, wie sorge ich dafür, dass der inhalt von beta.py einfach angefügt wird, als hätte ich alles an einem stück geschrieben ?


Editor öffnen, beide Quelltexte einfügen und speichern.

Ich versuch mich mal im Kaffeesatzlesen: Das Problem hast Du an anderer Stelle im Forum schon einmal versucht zu beschreiben, oder?

Kann es sein das Du eine Funktion schreiben möchtest, die man aufrufen kann und die ein Objekt zurückgibt das beim ersten Aufruf erzeugt wird und bei jedem weiteren Aufruf immer wieder zurückgegeben wird!? Das wäre dann eine Funktion mit einem Zustand der über Aufrufe hinweg erhalten bleiben soll. Also etwas was man üblicherweise in ein Objekt stecken würde. Zum Beispiel ungefähr so:

Code: Alles auswählen

class _MyFunction(object):
    def __init__(self):
        self.result = None

    def __call__(self):
        if self.result is None:
            self.result = some_external_function_call()
        return self.result

my_function = _MyFunction()
Benutzeravatar
DatenMetzgerX
User
Beiträge: 398
Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)

Beitragvon DatenMetzgerX » Freitag 3. November 2006, 21:05

ich umgehe dieses Problem im allgemeinen so ( wenn ich dich richtig verstanden habe)

Code: Alles auswählen

class GetFromC:
    instance = None
    def __init__(self, blublub):
        print "blublub"
        self.list = cgibmirliste()

    @staticmethode
    def getIntance():
        if not GetFromC.instance:
            GetFromC.instance = GetFromC()
        return GetFromC.instance
    def getList(self):
        return self.list


Wenn du jetzt die liste brauchst rufst du einfach GetFromC.getInstance().getList() auf, das Objekt prüft, ob es schon mal aufgerufen wurde. Wenn ja gibt es die aktuelle Instanz zurück, sonst erzeugt es eine. Das funktioniert auch über mehrere Module

Wer ist online?

Mitglieder in diesem Forum: Nebeig