Python:全局类类型与实例
我对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] 这个安全吗?有可能口译员没有抱怨,但由于某种原因可能会在稍后停止?如果
# ... 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语言中缺少:
和“类”的问题,你是对的。把两种语言写成一种语言的坏习惯。