python: global name is not defined

Gast #1531455
Lesenswert?

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
Gast #1531589
Lesenswert?

>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?
Gast #1531692
Lesenswert?

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
Gast #1531699
Lesenswert?

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)
Gast #1531705
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren