我有两个文件设置:
文件1 :
global test
test = 1
import FooBar
FooBar()
文件2(FoorBar.py):
class FooBar:
def Foo:
print test
基本上,我想将变量test
从文件1传递到文件2.使用上面的代码我得到了异常:
NameError:未定义全局名称(Python)
答案 0 :(得分:4)
您可以尝试不同的方法:
文件1
from FooBar import FooBar
FooBar.test = 1
foo_bar = FooBar()
foo_bar.Foo()
文件2
class FooBar:
test = None
def Foo( self ):
print self.test
或
文件1
from FooBar import FooBar
foo_bar = FooBar( 1 )
foo_bar.Foo()
文件2
class FooBar:
def __init__( self, test ):
self.test = test
def Foo( self ):
print self.test
不同之处在于,在第一种情况下,“test”变量将是静态的,即对于FooBar的所有实例都是相同的,在第二种情况下,它对于实例是本地的(对于所有实例都是不同的)。
答案 1 :(得分:3)
它不起作用。您可以将一个模块中的名称合并到另一个模块的名称空间中,例如from mymodule import *
。但是您希望将模块中的名称导出到其他模块中。虽然你可以用hacky的方式做到这一点,但并不是你想要编程的方式。
相反,只需将值作为参数传递给FooBar
构造函数。
答案 2 :(得分:0)
你在这里遇到了很多问题:
答案 3 :(得分:-2)
您需要在两个文件中都使用全局测试语句才能使用相同的全局。