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值4self.column对应win_a.column,值为2;other.column对应win_b.column,值为4,相加后得到新的column值6- 最终返回一个持有这两个新值的
Tile类实例
补充说明
这段示例代码没有做参数校验,如果+右侧传入的对象没有row或column属性,运行时会直接抛出AttributeError。实际生产环境中通常会在__add__开头增加类型检查逻辑,比如先判断other是否是Window类的实例再执行后续运算。
内容的提问来源于stack exchange,提问作者dextrin
相关产品推荐
相关产品推荐

