gpt4 book ai didi

python - 什么时候应该直接调用 __method__ ?

转载 作者:行者123 更新时间:2023-11-28 20:22:31 25 4
gpt4 key购买 nike

什么时候应该直接调用 __dunder__ 方法?例如,而不是

a + b

可以写

a.__add__(b)

但这是个好主意吗?

最佳答案

一般来说,不,这不是一个好主意。运算符毕竟是有原因的,所以当可以使用运算符时,就使用它。

在某些情况下,直接调用特殊方法很有用。最常见的事情是在子类化时。所以当你覆盖一个特殊的方法并且你想调用 super 的方法时,你将不得不直接使用这个名字。

除此之外,拥有实际方法允许您保留对它的引用,即 x = a.__add__。所以当你需要类似的东西时,你可以使用它。当然,对于基本运算符,它也不是那么有用,因为我们有 operator 模块,它已经为我们提供了运算符的二进制函数。

但可能存在一些边缘情况。不过总的来说:如果您不明确需要该方法,请使用运算符。清晰多了。

Martijn Pieters 在评论中提到了另一个用例,即避免调用逆运算符。您可能知道,表达式 a + b 将首先尝试调用 a.__add__(b)。但是,如果返回特殊值 NotImplemented,或者换句话说,如果运算符未由 a 的类型实现,则 Python 将尝试调用 b。 __radd__(a) 而不是(如果 b 是不同的类型)。因此,如果您想要避免这种行为,您可以直接调用 a.__add__(b)——此时您将获得一个 NotImplemented 值。

关于python - 什么时候应该直接调用 __method__ ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23272789/

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