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

类中变量是否都需以self.或class.开头?方法内中间变量需加self.吗?

Python类中变量的self.前缀问题

核心结论

  • 类中的变量不是必须都以self.或class.开头,要根据变量的作用范围来决定:
    • 实例变量:需要在多个实例方法之间共享,或者允许通过实例对象外部访问的变量,必须用self.开头,每个实例会独立持有一份。
    • 类变量:所有实例共享的变量,定义在类体中(不用前缀)或者用class.前缀调用。
    • 方法局部变量:仅在当前方法内部辅助计算、不会被其他方法或外部访问的中间变量,完全不需要加self.,直接定义成普通局部变量即可。

针对你给出的代码示例

你代码里的self.z完全可以改成普通的z,因为它只是add方法里临时存储计算结果的中间值,之后直接返回,不需要在方法外或者其他实例方法中访问。修改后的代码更合理:

class apples:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def add(self):
        z = str(self.x + self.y) + " apples"
        return z

# 注意原代码中foo绑定的是方法对象,需要加()调用才能得到结果
foo = apples(3, 5).add()

额外提醒

只有当某个变量需要被当前实例的其他方法调用,或者允许外部通过实例名.变量名的方式访问时,才需要用self.将其声明为实例变量。用局部变量存储临时中间值,不仅不会占用实例的内存空间(局部变量在方法执行结束后会被销毁),还能更好地封装内部逻辑,避免不必要的外部访问。

内容的提问来源于stack exchange,提问作者Jordan Kizer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:35:20