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

Python中Setter方法相关的名字修饰(Name Mangling)问题

为什么双下划线变量会导致Setter条件判断失效?

核心原因是Python的**名称修饰(Name Mangling)**机制:

  • 当你在类的方法(比如__init__)中使用以双下划线__开头的变量(如__name、__employee_id)时,Python会自动对这个变量名进行重命名,格式为_类名__变量名。比如你的类如果叫Employee,__employee_id会被改成_Employee__employee_id,目的是避免子类意外覆盖父类的“私有”属性。
  • 而你写的Setter方法,应该是针对不带双下划线的属性(比如employee_id)进行赋值的。这时候Setter操作的self.employee_id,和__init__里的__employee_id其实是两个完全不同的变量——前者是普通属性,后者是被重命名后的“私有”属性。
  • 所以之前的Setter条件判断根本没作用到__init__初始化的那个变量上,自然不会生效,输出还是初始的<0000>: ;去掉双下划线后,__init__里的变量名和Setter操作的属性名一致,都是name和employee_id,Setter的条件判断就能正确修改目标变量,于是输出变成<9999>: Unknown。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:37:33