Python 运算符重载中__add__(self,other)的other.x如何理解?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 运算符重载中__add__(self,other)的other.x如何理解?相关的知识,希望对你有一定的参考价值。

class A: ... def __add__(self,other): return self.x+other.x ... 1)这里的other.x为什么是参数调用属性? 2)这个other.x和self.x有什么区别?

参考技术A 估计是讲不明白。只能尽力。面向对象的基础需要再理解一下。
self是第一个参数。在python里是指“实例”本身。就是自己。
这个class
A有一个属性是x
other是第二个参数,它代表另一个class
A的实例。当然它也有一个属性x
__add__是一个重载加号的函数。意思是将两个class
A实例相加,结果等于两个实例的x变量相加之和。
other.x与self.x当然是指不同实例中的变量x

python运算符重载

python运算符重载就是在解释器使用对象内置操作前,拦截该操作,使用自己写的重载方法。

重载方法:__init__为构造函数,__sub__为减法表达式

class Number:
def __init__(self, start):
    self.data = start

def __sub__(self, other):
    return Number(self.data - other)

>>>X = Number(5)
>>> Y = X - 2
>>> Y.data
3

其他重要的还有(省去前后的__):

del析构函数, add加法表达式, or, repr打印(print), str转化(str), call函数调用(不懂), getitem,setitem索引运算

len长度, bool布尔测试, cmp比较

def __setitem_(self, index, value):
    self.data[index] = value

def __getItem__(self, index):
    return self.data[index]

 

以上是关于Python 运算符重载中__add__(self,other)的other.x如何理解?的主要内容,如果未能解决你的问题,请参考以下文章

Python之__slots__ &运算符重载反向运算

如何正确重载 __add__ 方法?

__add__,关于运算符重载(用户权限)

流畅python学习笔记:第十三章:重载运算符__add__,__iadd__,__radd__,__mul__,__rmul__,__neg__,__eq__,__invert__,__pos__(

python 面向对象调用问题

Python中类方法重载---大部分