タプルは分数を表します。レシピを掛けて分数を割ろうとしています
class Test():
def __init__(self):
self._x=(1,2)
def __div__(self,div_fraction):
return (self._x[0]*div_fraction[1],self._x[1]*div_fraction[0])
y=Test()
z=y/(1,3)
print(z)
私に与える:
Traceback (most recent call last):
File "E:/test.py", line 8, in <module>
z=y/(1,3)
TypeError: unsupported operand type(s) for /: 'Test' and 'Tuple'
しかし、__div__
を__mul__
に変更し、*
の代わりに/
を使用すると、本来の動作を実行します。
発生した例外を修正するにはどうすればよいですか?
Python3.xは__truediv__
と__floordiv__
を使用します。 __div__
は2.xのみです。
先日同じ問題がありました。
ご使用の環境で__future __。divisionがアクティブかどうかを確認してください。その場合は、__ truediv__も定義する必要があります。
http://docs.python.org/2/library/operator.html#mapping-operators-to-functions