In einem Modul abfragen, ob eine Klasse vom Hauptprogramm initialisiert wurde?

24/09/2007 - 15:44 von Michael Kohn | Report spam
Hi,

lerne seit kurzem Python und tue mich mit OOP wirklich
noch _sehr_ schwer - daher ist meine Frage evtl. auch etwas
unglücklich formuliert...

Mein Problem:

In einem Modul 'mymod' habe ich eine Klasse definiert.
Diese wird im Hauptprogramm 'myprog.py' initialisiert.
(Ist in Wirklichkeit eine Logklasse, die wahlweise einen
Loghost, eine Logdatei oder nur die Konsole anspricht.)

In einem anderen Modul ('mymod2') gibt es mehrere
Funktionen, die vom Hauptprogramm verwendet werden.

Die Frage ist nun, ob es eine Möglichkeit gibt, in der
importierten Funktion abzufragen, ob die Klasse vom
Hauptprogramm initialisiert wurde und ob die Funktion
dann diese Klasse (Instanz?) auch verwenden kann?

Oder ist mein Denkansatz kompletter Blödsinn? ;-)


myprog.py:
-
from mymod import MyClass
from mymod2 import my_func, ...

my_instance = MyClass()

my_instance.my_method('foo')

my_func()



mymod.py:

class MyClass()

def my_method()



mymod2.py:
-
def my_func()
# So was in der Art ?????
if my_instance:
my_instance.my_method('bar')





Danke und Gruß

Michael
 

Lesen sie die antworten

#1 Stefan Behnel
24/09/2007 - 15:58 | Warnen spam
Michael Kohn schrieb:
In einem Modul 'mymod' habe ich eine Klasse definiert.
Diese wird im Hauptprogramm 'myprog.py' initialisiert.
(Ist in Wirklichkeit eine Logklasse, die wahlweise einen
Loghost, eine Logdatei oder nur die Konsole anspricht.)



Du meinst "instanziiert", es wird also eine Instanz der Klasse erzeugt.


In einem anderen Modul ('mymod2') gibt es mehrere
Funktionen, die vom Hauptprogramm verwendet werden.

Die Frage ist nun, ob es eine Möglichkeit gibt, in der
importierten Funktion abzufragen, ob die Klasse vom
Hauptprogramm initialisiert wurde und ob die Funktion
dann diese Klasse (Instanz?) auch verwenden kann?

myprog.py:
-
from mymod import MyClass
from mymod2 import my_func, ...

my_instance = MyClass()

my_instance.my_method('foo')

my_func()
mymod.py:

class MyClass()

def my_method()



mymod2.py:
-
def my_func()
# So was in der Art ?????
if my_instance:
my_instance.my_method('bar')



Warum übergibst du die Instanz nicht explizit an das Modul? Sowas wie


* mymod2:

LOGGER = None
def setze_logger(logger):
global LOGGER
LOGGER = logger

def tu_was_was_loggt():
if LOGGER:
LOGGER.logge("hier!")
...

* Hauptprogramm:

logger = mymod.MyClass()
logger.initialisiere()

mymod2.setze_logger(logger)

mymod2.tu_was_was_loggt()


Stefan

Ähnliche fragen