Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:全局类类型与实例_Python_Python 3.x_Class_Global Variables - Fatal编程技术网

Python:全局类类型与实例

Python:全局类类型与实例,python,python-3.x,class,global-variables,Python,Python 3.x,Class,Global Variables,我对Python还很陌生,所以请原谅一些愚蠢的问题:) 我正在设置一些类似全局常量的数据,我意识到我可以做到这一点,而无需解释器对此进行抱怨: # ... in prime.py ... class GlobalData: LongList = [ 0,1,2,3,4,5,6,7 ] # ... in another module ... data = prime.GlobalData.LongList[2] 这个安全吗?有可能口译员没有抱怨,但由于某种原因可能会在稍后停止?如果

我对Python还很陌生,所以请原谅一些愚蠢的问题:)

我正在设置一些类似全局常量的数据,我意识到我可以做到这一点,而无需解释器对此进行抱怨:

# ... in prime.py ...

class GlobalData:
    LongList = [ 0,1,2,3,4,5,6,7 ]

# ... in another module ...

data = prime.GlobalData.LongList[2]
这个安全吗?有可能口译员没有抱怨,但由于某种原因可能会在稍后停止?如果不是很明显,我的问题是使用类类型来访问成员,而不是使用类实例来访问成员。例如,在
prime.py
中,我可以将类命名为
GLOBALDATA
,并在底部添加
GLOBALDATA=GLOBALDATA()

在C/C++中,我将使用不同的运算符(::),但即使这样,也不允许在没有实例的情况下从类类型访问非静态变量值。我不是在比较这两种语言,只是确保我的问题被理解

这两个都可以接受吗?在特定情况下,这种方法更好吗


感谢您的建议,这是一个“静态”变量。“非静态”变量是在
\uuuu init\uuu
中创建的。(同样,如果类只是为了保存一组全局数据而存在,那么它是毫无意义的——您可以只使用模块级变量。)(而且C中没有
或类。)通过类和实例访问
LongList
静态变量没有问题。我没有意识到在
\uuuu init\uuuu
之外声明的所有变量都是静态的。这是真的吗?不知道我是怎么走到这一步的,却没有弄明白。我想这就解释了为什么这是可行的。我使用该类对少量相关的全局值进行分组,但我可以为这些情况创建一个模块。使用类对相关数据进行分组是一个坏主意吗?例如,如果我有几个全局值与一个类似对象的概念有关?哦,关于C语言中缺少
和“类”的问题,你是对的。把两种语言写成一种语言的坏习惯。