指數的特殊方法是什么?例如:
class Foo。
def __init__(self,data):
self.data = data
def __pow__(self, power):
return self.data ** power
if __name__ == '__main__'/span>:
f=Foo(2)
print(f**3)
正確產生8,但當我運行3**f時,它說。TypeError: unsupported operand type(s) for ** or pow(): 'int' and 'Foo'
uj5u.com熱心網友回復:
你應該使用__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__'/span>:
f=Foo(2)
print(f**3) # 8.
print(3**f) # 8
如果它不作業,請告訴我......
。uj5u.com熱心網友回復:
另一種方法是繼承int類:
class Foo(int)。
def __init__(self, x):
self.x = x
def __pow__(self, power):
return self.x ** power
a = Foo(2)
print(2 ** a)
uj5u.com熱心網友回復:
當你執行f**3時,解釋器會自動呼叫__pow__方法來處理你給它的整數物件(__pow__方法相當于**運算子),但它不能解釋任何使用f作為一個數字的冪的方法。所以你應該在Foo類中定義另一個函式來實作這一用法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/333352.html
標籤:
