You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:01:00