[英]Import a single global variable from a different module in python
我有一個有趣的應用程序,我想從其他模塊訪問全局變量。
我目前有模塊x
from pkg.mod import *
為了得到命名空間foo
。
我的pkg.mod如下所示
import x
foo = 0
# do some stuff
foo = myClass()
一切都很好,但是,我不想這樣做,主要是因為它不好。
如果我嘗試以下
from pkg import mod
我遇到了循環依賴問題。 ImportError: cannot import name mod
對我有意義的ImportError: cannot import name mod
。
我想做的是
from pkg.mod import foo
但這也給了我一個導入名稱錯誤: ImportError: cannot import name foo
我不確定為什么,但我不認為您可以專門導入變量。
無論如何,是否遵循正確的做法導入foo
?
- -編輯 - -
我試圖刪除共享變量,並以這種方式將其放在第三個模塊中
公斤
foo = 0
pkg.mod
from pkg.y import foo
foo = myClass()
x.dostuff()
X
from pkg.y import foo
def dostuff():
print(foo)
現在x認為foo仍然為0。(我可以保證mod正在調用x,因此首先發生。)
當我需要一個真正的全局變量時,我發現它更干凈,可以創建一個名為trueglobals.py的模塊; 它可以保留為空,但用於適當的文檔...
# -*- coding: utf-8 -*-
# Object references that are used extensively across many modules are
# stored here.
# someObject1 - instantiated in main.py
# someObject2 - instantiated in someothermodule.py
在實例化對象的模塊中...
import trueglobals
trueglobals.someObject1 = myClass(somevar)
在任何需要對象的模塊中...
import trueglobals
localVar = trueglobals.someObject1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.