Python中在类方法内读取全局变量是否属于不良实践?
在类方法中读取全局变量是否属于不良实践?
仅读取全局变量确实属于不良实践,主要原因有这几点:
- 可读性差:看类的方法实现时,没法直接知道它依赖外部的全局变量,得额外去代码里找变量定义的位置,增加理解成本。
- 维护难度高:要是全局变量
n在其他地方被修改,这个类方法的行为会跟着变,排查问题时得追溯所有修改n的代码,非常麻烦。 - 破坏封装性:类本该是一个相对独立的模块,直接读取全局变量让它和外部环境绑定死了,没法单独把这个类拿到其他地方复用。
更优的替代方案
方案1:将变量传入构造函数
n = 2 class Yes: def __init__(self, n): self.n = n def number(self): return self.n y = Yes(n) print(y.number())
这种方式把依赖明确传递给类的实例,类的属性来源清晰,而且不同实例可以传入不同的n值,复用性更强。
方案2:将变量作为方法参数
n = 2 class Yes: def number(self, n): return n y = Yes() print(y.number(n))
方法的依赖一目了然,调用时必须传参,适合每次调用number方法时n值可能变化的场景,灵活性更高。
内容的提问来源于stack exchange,提问作者NFeruch - FreePalestine
相关产品推荐
相关产品推荐

