我正在用 Python 编写一个游戏,其中所有 IO 事件都由一个 IO 对象完成(希望可以很容易地将那个对象换成另一个实现不同用户界面的对象)。游戏中几乎所有其他对象都需要在某个时候访问 IO 系统(例如打印消息、更新玩家位置、显示游戏中 Action 引起的特殊效果),所以我的问题是:
对全局可用的 IO 对象的引用有意义吗?
另一种方法是将对 IO 对象的引用传递到需要使用它的每个对象的 __init__()
中。我知道从测试的角度来看这很好,但这值得由此产生的“函数签名污染”吗?
谢谢。
最佳答案
是的,这是对全局变量的合法使用。如果您不愿意,传递等效于此全局的上下文对象是另一种选择,如您所提到的。
既然我假设你正在使用多个文件(模块),为什么不做这样的事情:
import io
io.print('hello, world')
io.clear()
这是具有比简单打印更复杂的 I/O 需求的程序执行诸如日志记录之类的事情的常见方式。
关于Python游戏编程: is my IO object a legitimate candidate for being a global variable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/687703/