Python游戏编程:我的IO对象是否是成为全局变量的合法候选者?

5 python io global-variables

我正在使用Python编写游戏,其中所有IO活动都是由IO对象完成的(希望将该对象交换为另一个实现不同用户界面的对象).游戏中几乎所有其他对象都需要在某个时刻访问IO系统(例如打印消息,更新播放器的位置,显示由游戏内动作引起的特殊效果),所以我的问题是:

对全局可用的IO对象的引用是否有意义?

另一种方法是将IO对象的引用传递给__init__()需要使用它的每个对象.我知道从测试的角度来看这是好的,但这是否值得产生"功能签名污染"?

谢谢.

rmm*_*mmh 9

是的,这是对全局变量的合法使用.如果你不愿意,如你所提到的那样,传递一个等同于这个全局的上下文对象是另一种选择.

由于我假设你使用的是多个文件(模块),为什么不这样做:

import io
io.print('hello, world')
io.clear()
Run Code Online (Sandbox Code Playgroud)

这是一种常见的方式,具有比简单打印更复杂的I/O需求的程序,例如日志记录.