python - python:指数特殊方法?
问题描述
指数的特殊方法是什么?例如:
class Foo:
def __init__(self,data):
self.data = data
def __pow__(self, power):
return self.data ** power
if __name__ == '__main__':
f=Foo(2)
print(f**3)
正确产生 8,但是当我运行3**f
它时说:TypeError: unsupported operand type(s) for ** or pow(): 'int' and 'Foo'
解决方案
你应该习惯__rpow__
这样使用
代码:
class Foo:
def __init__(self,data):
self.data = data
def __pow__(self, power):
return self.data ** power
def __rpow__(self, power):
return self.data ** power
if __name__ == '__main__':
f=Foo(2)
print(f**3) # 8
print(3**f) # 8
告诉我它是否不起作用...
推荐阅读
- c++ - 任何人都可以解释为什么我在这里得到 1 吗?
- tensorflow2.0 - 在 GPflow 中进行推理的 API
- javascript - 使用 React 道具和 Axios 更新列表不起作用
- azure - 将 go 与 redis 一起使用 - 无法连接
- java - 关闭 JFrame 主方法时不应停止执行
- django - 如何在 Django 模板标签中放置换行符?
- recursion - 在 Coq 中允许潜在的无限循环
- sql - Oracle:安全地更改表中的值,如果不存在新条目,则删除旧条目
- python-3.x - 如何在 Python 中为 IRC 机器人配置 SSL?
- android - 为什么 smallScreens=false 会阻止应用安装在 Pixel 3(来自 Google Play)上?