我有类似下面的一些Python代码:实例化一个全局对象
def a():
x.b()
def c():
x = create_x()
a()
这里,x
是一个对象,所以在c()
,我想创建x
,然后运行功能a()
。我想x
是全球性的,而不是必须将它作为参数传递给a()
。但是,如果我尝试运行上面的代码,它会告诉我,在a()
不引用任何内容。
那么标准的解决方案是什么?一种想法是全局定义x
并将其设置为0:
x = 0
def a():
global x
x.b()
def c():
global x
x = create_x()
a()
但这似乎有些奇怪,因为它暗示x
是一个整数,而实际上它是一个对象。
在C++中,我通常会通过创建一个指向x
的指针,将其设置为0,然后将指针设置为由新对象x
创建的内存来解决此问题。但是,Python中最好的解决方案是什么?
使用'None',而不是'0'? – Pit
最初不要设置'x' ...?它将通过运行'c'来创建。你不必在函数之外声明它,'global'已经做到了。 – deceze
看看是否有帮助:http://stackoverflow.com/questions/16511321/python-global-object-variable – planet260