我不知道如何進口和從進口工作的範圍。請看下面的例子。範圍從進口
我有一個類和我想要一個全局範圍的類的文件中的對象。
# File alpha.py
class Alpha():
def __init__(self):
self.alpha = 0
def set(self, value):
self.alpha = value
def get(self):
return self.alpha
# This is the global variable
alpha = None
在另一個文件(control.py)我想訪問到可變阿爾法在文件alpha.py所以我使用:
# File control.py
from alpha import alpha
def control():
a = alpha.get()
print ('Value of alpha in control ', a)
在main.py我想使阿爾法的一個實例是這樣的:
# File main.py
from alpha import Alpha, alpha
alpha = Alpha()
alpha.set(1)
a = alpha.get()
print ('Value in main: ', a)
from control import control
control()
結果是(顯然阿爾法的範圍是局部的,儘管我從+進口使用):
('Value in main ', 1)
Traceback (most recent call last):
File "main.py", line 13, in <module>
main()
File "main.py", line 11, in main
control()
File "control.py", line 4, in control
a = alpha.get()
AttributeError: 'NoneType' object has no attribute 'get'
但是,如果使用進口與完整的對象路徑它的工作原理:
# File main2.py using simple import
import alpha
alpha.alpha = alpha.Alpha()
alpha.alpha.set(1)
a = alpha.alpha.get()
print ('Value in main ', a)
from control import control
control()
調用main2.py的結果是:
('Value in main ', 1)
('Value of alpha in control ', 1)
我期待相同的行爲。我在這裏錯過了什麼?
謝謝您的回答
謝謝你的回答,但實際上這不是問題。我想要的是能夠擁有由實例化對象的main.py使用的共享對象,以及讀取它的對象control.py。如果你運行的應用程序都應讀取值爲1. –
@ErniTron對不起,誤解,我更新了我的答案,希望它對你有幫助。 –