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

Python类__add__方法中other参数访问实例属性的原理疑问

代码逻辑详解

1. __add__方法的作用

这是Python的运算符重载魔术方法,当你使用+运算符对两个Window类实例进行运算时,会自动触发该方法:

  • +左侧的Window实例会被赋值给方法的第一个参数self
  • +右侧的对象会被赋值给方法的第二个参数other

2. other.row/other.column的逻辑

这个写法本质和你常用的self.row没有区别:

  • self只是Python约定俗成的「当前类实例」的参数名,本质就是个普通的函数参数
  • other作为传入的第二个参数,只要它是带有row、column实例属性的对象(最常见的场景就是另一个Window类实例),就可以通过参数名.属性名的方式直接读取它的属性值

举个实际运行的例子你就能明白:

# 初始化两个Window实例
win_a = Window(row=1, column=2)
win_b = Window(row=3, column=4)

# 执行+运算,自动调用__add__方法
new_tile = win_a + win_b

这段运算中,__add__方法里的self就是win_a,other就是win_b:

  • self.row对应win_a.row,值为1;other.row对应win_b.row,值为3,相加后得到新的row值4
  • self.column对应win_a.column,值为2;other.column对应win_b.column,值为4,相加后得到新的column值6
  • 最终返回一个持有这两个新值的Tile类实例

补充说明

这段示例代码没有做参数校验,如果+右侧传入的对象没有row或column属性,运行时会直接抛出AttributeError。实际生产环境中通常会在__add__开头增加类型检查逻辑,比如先判断other是否是Window类的实例再执行后续运算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:03