[英]Share variables between modules
我有這種情況:
library_file1.py:
class A:
def foo(self):
print("bar")
def baz(self):
pass
project_file.py:
from library_file1 import A
class B(A):
def baz(self):
print(the_variable)
library_file2.py:
from project_file import B
the_variable = 7
b = B()
b.foo() # prints "bar"
b.baz() # I want this to print "7", but I don't know how
如何允許在project_file.py
中編寫可以訪問library_file2.py中的變量的代碼? 我能想到的唯一解決方案是:
project_file.py:
from library_file1 import A
class B(A):
def baz(self, the_variable):
print(the_variable)
library_file2.py:
from project_file import B
the_variable = 7
b = B()
b.foo()
b.baz(the_variable)
但這感覺很尷尬,並且無法擴展到像the_variable
這樣的許多變量。
非常簡單:您需要將變量保存在project_file.py
而不是library_file2.py
。 將project_file
更改為:
from library_file1 import A
the_variable = None
class B(A):
def baz(self):
print(the_variable)
然后在library_file2
:
import project_file
from project_file import B
project_file.the_variable = 7
b = B()
b.foo() # prints "bar"
b.baz() # prints "7"
使用參數也是一個很好的解決方案(應盡可能避免使用全局變量)。
python中沒有真正的全局變量。 變量始終附加到作用域。 我們通常說變量在模塊范圍內時是“全局”的。
最廣泛的范圍是內置范圍,因此從理論上講您可以將某些內容添加為內置范圍。 但是,這是一個非常糟糕的做法。 此外,它還不能完全解決問題,因為所有文件都可以訪問該新內置文件,但是如果不明確提及范圍,它們將無法重新分配它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.