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
Einbinden von Unterfunktionen
Eine Variable ruft eine Funktion auf?riven hat geschrieben:in alpha.py setze ich eine variable, die eine in c++ geschriebene routine aufruft.
Was denn nun externe Funktion oder Liste?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.
Aufruf zur Liste? Listenelemente werden von `beta.py` aus aufgerufen?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?
Editor öffnen, beide Quelltexte einfügen und speichern.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 ?
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()
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
ich umgehe dieses Problem im allgemeinen so ( wenn ich dich richtig verstanden habe)
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
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