私はオンライン ウィキブックを介して Python を独学していますが、演算子のオーバーロードを使用した例の 1 つで紛らわしいエラーに遭遇しました。例によると:
class FakeNumber:
n = 5
def __add__(A,B):
return A.n + B.n
c = FakeNumber()
d = FakeNumber()
d.n = 7
c.__imul__ = lambda B: B.n - 6
c *= d
c
を返すはずです
1
が、代わりに次のようになります:
TypeError: unsupported operand type(s) for *=: 'FakeNumber' and 'FakeNumber'
オブジェクトを掛け合わせることはできないと思いますが、では のポイントはc.__imul__ = lambda B: B.n - 6
何ですか? 何か足りないものはありますか、または不適切な構文はどこにありますか?
参照: http://en.wikibooks.org/wiki/Python_Programming/Classes#Operator_Overloading