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

Python中__getattr__与__setattr__的默认实现是什么?

Python __getattr__ 与 __setattr__ 默认实现机制

__getattr__ 默认实现

  • 触发规则:仅当属性查找的全流程都未命中时才会被调用。属性查找的默认顺序是:先调用__getattribute__查找实例的__dict__→ 查找对应类的__dict__→ 查找父类MRO链上所有类的__dict__→ 都找不到时才会触发__getattr__
  • 默认行为:直接抛出AttributeError异常,提示当前对象不存在该属性
  • 补充说明:空类实例调用不存在的属性时抛出的错误,就是默认__getattr__的输出结果

__setattr__ 默认实现

  • 触发规则:只要对对象的属性执行赋值操作,无论该属性是否已经存在,都会触发该方法
  • 默认行为:将赋值的属性名和对应值,直接写入当前对象的实例属性字典__dict__中,不会修改类属性或者父类属性。如果赋值的属性名和类属性重名,赋值后会在实例层面覆盖该属性的取值
  • 补充说明:如果重写该方法,不要直接在内部执行self.属性名 = 值的操作,会触发递归调用无限循环,需要调用父类的__setattr__实现,或者直接操作self.__dict__写入值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:27:01