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

Python类中self的正确使用场景:AA与BB类实例对比问询

类方法中self的使用问题解答

两种写法本身都没有语法错误,但适用场景完全不同,不能直接判定谁对谁错:

  • 类AA的写法:把z定义成了实例的属性。调用foo()方法后,这个实例可以直接访问obj.z,比如:
    obj = AA(2, 3)
    obj.foo()
    print(obj.z)  # 输出5
    
    如果后续需要在其他方法或者实例外部复用z这个计算结果,这种写法是合理的。
  • 类BB的写法:z是foo()方法内部的局部变量,只有在方法执行期间存在,方法结束后就会被销毁,实例外部或其他方法无法访问它。如果z只是方法内临时使用的中间值,这种写法更合适,不会额外占用实例的属性空间。

何时该用self,何时不该用?

  • 必须用self的场景:
    • 要访问或定义实例的持久属性时,比如示例里的self.a、self.b,或者AA里需要保留的self.z——这些值会和实例绑定,只要实例存在就能被访问。
    • 要调用实例的其他方法时,比如在某个方法里调用self.another_method()。
  • 不需要用self的场景:
    • 变量只是方法内部的临时中间值,不需要在方法执行结束后保留,也不需要被其他方法/外部访问,直接作为局部变量定义即可,比如BB里的z。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 03:50:31