如何在python中声明要在多个模块中使用的变量

时间:2016-07-21 17:55:46

标签: python class import global-variables constants

之前可能已经提出过这个问题,但我在Stack Overflow上发现的其他帖子主要涉及更改全局变量和导入函数等。当我快速搜索时,我的措辞可能不正确。

我开始用Python编写代码,我想知道最有效和最恰当的方法是做什么。

我有一个父模块,我正在导入其他模块。它具有以下结构:

# some import statements go here

# Constants that need to be the same for all objects
a = 1
b = 2
...

# A class with some useful functions
class Def():
    def __init__(self):
    ...

我正在其他一些模块中导入此模块,以使用Def类中的函数。但我也希望所有导入它的模块都能访问我在类外声明的常量。

我在外面宣布它们,因为我想在那个模块中调用它们的地方使用这些值。我不想将它们附加到对象上(并且必须将它们称为self.a,self.b等),并且它们将是我正在使用的每个模块中的常量。

我正在考虑的一些选项是:

  1. 在单独的类中将这些声明为全局变量,然后导入 每个模块中的那个类
  2. 使用from parentmodule import *
  3. 我不确定这些中的任何一个是否有效,以及是否有标准方法可以做到这一点。由于常量的性质,在执行后者时变量名称的冲突不会成为问题。在我的程序环境中,它们是具有唯一名称的物理常量,不会用于表示其他变量。

    如果问题太基本/以前被问过,请道歉,谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

导入整个模块将充当一种命名空间,在我看来,这是最简单的方法。所以你有" mystuff.py":

a = 1
b = 2

def MyFunc():
    ....

然后在你的其他模块中:

import mystuff

print mystuff.a
print mystuff.b

mystuff.MyFunc()

您的解决方案:

from mystuff import *

工作,但可能是冲突,我的想法并不是人们所认为的" pythonic。"