簡體   English   中英

在模塊之間共享變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM