Python 常用协议与操作详解
1. 幂运算与取模
在 Python 中,幂运算和取模操作是常见的数学运算。例如:
>>> 5 ** 3
125
>>> 125 % 50
25
>>> 5 ** 3 % 50
25
>>> pow(5, 3, 50)
25
为了使用 __pow__()
方法支持这种行为,可以选择接受一个额外的参数,用于执行取模操作。这个新参数必须是可选的,以支持正常的 **
运算符。由于没有合理的默认值可以盲目使用而不影响标准幂运算,所以它应该默认为 None
,以确定是否执行取模操作。示例代码如下:
>>> class Example:
... def __init__(self, value):
... self.value = value
... def __pow__(self, power, modulo=None):
... val = 1
... for x in range(power):
... val *= self.value
... if modulo is not None:
... val %= modulo
... return val
...
>