我有類似下面的一些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