gpt4 book ai didi

python - 在 Python 中定义方法别名?

转载 作者:IT老高 更新时间:2023-10-28 20:59:28 27 4
gpt4 key购买 nike

我有一个向量类,我定义了 __mul__ 方法来将向量乘以一个数字。

这里是 __mul__ 方法:

def __mul__(self, other):
x = self.x * other
y = self.y * other
new = Vector()
new.set_pos((x, y))
return new

我的问题是我不知道数字和向量之间哪个是哪个。如果 self 是数字,self.x 会引发错误。 (我可能在这一点上弄错了:“其他”总是一个数字吗?)

所以我在这里找到了:Python: multiplication override我能做到的:

__rmul__ = __mul__

但是如何在类定义中做到这一点?

类似:

def __rmul__ = __mul__

最佳答案

self 永远不会是 __mul__() 中的数字,因为方法附加到的对象不是数字,而是向量,根据定义,它是被乘数.

other 将是一个数字,如果你的对象被一个数字相乘。或者它可能是其他东西,例如另一个向量,您可以对其进行测试和处理。

当您的对象是乘数时,如果被乘数不知道如何处理操作,则调用 __rmul__()

要处理 __mul____rmul__ 应该是相同方法的情况,因为操作是可交换的,您可以在类定义中进行赋值。

class Vector(object):
def __mul__(self, other):
pass

__rmul__ = __mul__

关于python - 在 Python 中定义方法别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11264923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com