我是编程新手,最近学习了 python 和面向对象编程的基础知识。我知道拥有大量全局变量通常不是一个好主意,我可以将它们全部放入一个类中。这是正确的做法吗?
class GameState(object):
def __init__(self):
self.variable1 = 1
self.variable2 = 2
self.list = [3, 4, 5]
g_state = GameState()
而且,如果我想访问 g_state 中的变量,最好的方法是什么?
将 g_state 传递给需要访问的函数/类? 实现 setter/getter 并调用它们? 直接使用g_state.variable1?
或者有更好的方法吗?
编辑:更具体地说,我正在尝试使用 pygame 在 python 中编写一个游戏,并且正在考虑将我的游戏状态变量放入一个类中,以免周围有一堆全局变量。我不确定如何通过良好的设计访问这些变量,以免以后遇到麻烦。
最佳答案
你是对的,太多的全局变量不是一个好主意。污染的全局命名空间可能会导致错误。
但是,不要为了上课而把他们放到类里面。如果您真的有那么多变量,也许您应该考虑将您的程序拆分成多个模块。
另外请理解,您不能像在 JavaScript 中那样在 Python 中创建全局变量。您的变量始终在模块范围内。
我举个例子。模块 a.py:
A = 42
模块 b.py:
import a
print(A)
你得到了什么? 名称错误
。为什么?因为变量 A 不是全局的,所以它在模块 a
下。您需要使用 a.A
来引用它。
类下不用塞变量。它们位于充当命名空间的模块下,没有问题。
关于python - 在类中包装全局变量(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14032378/