Folgendes PRoblem: ich importiere ein modul von einer klasse dieses moduls erzeuge ich ein objekt in einem anderen, vor der objekterzeugung vollzogenen import steckt eine funktion diese funktion will objekt.methode ausführen, aber dann kommt der fehler. er kommt auch, wenn ich in der funktion "global objekt" stehen habe. i don't get it
>er kommt auch, wenn ich in der funktion "global objekt" stehen habe.
das gibt zu denken, dass die von dir vermutete Ursache keine ist.
probier mal ein Minimalbeispiel aus ala:
def x():
global y
y = 1
x()
welche Exception wird geschmiessen?
danke - keine, da keine importe erfolgen. hier mal ein beispiel: main.py: import module import function ob_ject = module.cl_ass() ob_ject.me_thod() function.function() module.py: class cl_ass(object): def __init__(self): pass def me_thod(self): print "hello" function.py: def function(): global ob_ject print type(ob_ject) File "function.py", line 7, in function print type(ob_ject) NameError: global name 'ob_ject' is not defined
hmm bist du sicher, dass es sowas wie global namespace auch modulextern gibt? wenn ich van rossum wäre, hätte ich 2 mal überlegt ob so etwas haben will ... was passiert wenn du obj_ect in function-module vorher im globalen namespace einfach None zuweist? function.py: ob_ject = None def function(): global ob_ject print type(ob_ject)
vielleicht hat es auch was mit bindungszeitpunkt eines objektes zu seinem namem zu tun. wie in diesem beispiel: def mylist(lst = []): lst.append(1) return lst mylist() mylist() ...
hello <type 'NoneType'> Also kann ich einem importierten Modul ein Objekt nicht bekanntmachen? Oder ist es sowieso besser, das Objekt der Funktion zu übergeben. Ursache ist, dass ich versuche, das Programm zu unterteilen. Morgen geht's weiter. Danke für dein Interesse.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.