首页 > 解决方案 > 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'

标签: python

解决方案


你应该习惯__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

告诉我它是否不起作用...


推荐阅读