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

Python名称修饰(mangling)机制困惑:属性赋值报错疑问

问题原因解析

这是Python的**名称修饰(Name Mangling)**机制在起作用:

  • 当你在Atm类里定义__balance这种双下划线开头的变量时,Python会自动把它重命名为_Atm__balance,这才是类内部实际使用的变量。
  • 执行bank.__balance = "abcdefg"时,你只是给bank实例新增了一个完全独立的属性,和类内部真正的_Atm__balance毫无关联。类里的方法根本不会用到这个新增的__balance,所以不会触发运算错误,自然能正常运行。
  • 而bank._Atm__balance = "wgwwg"是直接修改了类内部实际使用的那个变量。如果Atm类里的方法有对这个变量做整数加法的逻辑(比如存款时self.__balance += 金额),现在变量变成了字符串,整数和字符串相加自然会抛出类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:39:50