簡體   English   中英

從python中的其他模塊導入單個全局變量

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

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