gpt4 book ai didi

python - `operator.__inv__` 存在的目的是什么?

转载 作者:行者123 更新时间:2023-12-04 04:10:50 25 4
gpt4 key购买 nike

invinvert 有什么区别?

>>> import operator
>>> operator.inv is operator.invert
False
>>> operator.__inv__ is operator.__invert__
False

我收集到 __invert__是像 ~1(1).__invert__() 这样的一元操作的钩子(Hook)。

但另一个是什么__inv__对应于?或者,如果相同,为什么我们要添加另一个名称和不同的功能来做同样的事情?

最佳答案

两者代表同一个运算符。长拼写是在 Python 2.0 中添加的,而短拼写从未被删除。

operator.inv(obj)

operator.invert(obj)

operator.__inv__(obj)

operator.__invert__(obj)

Return the bitwise inverse of the number obj. This is equivalent to ~obj.

New in version 2.0: The names invert() and __invert__().

来源:Python 2 operator documentation .

这些被实现为不同的对象,因为它们的表示反射(reflect)了名称。请注意,相应的 dunder 和常规名称确实共享相同的表示和对象。

>>> operator.__inv__
<built-in function inv>
>>> operator.__invert__
<built-in function invert>
>>> operator.__inv__ is operator.inv
True
>>> operator.__invert__ is operator.invert
True

从历史上看,这两个名称同样可行 - Python 1 operator module使用了 inv/__inv__ 名称,而 Python 1 data model使用特殊方法 __invert__ 名称。

关于python - `operator.__inv__` 存在的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61759530/

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