Использование обратных операторов в Python

Я никогда раньше не работал с обратными операторами, поэтому, пожалуйста, не пламенем! Только что закончил изучать их, поэтому хотел их опробовать. Но почему-то не работает. Вот код:

>>> class Subtract(object):
    def __init__(self, number):
        self.number = number
    def __rsub__(self, other):
        return self.number - other.number


>>> x = Subtract(5)
>>> y = Subtract(10)
>>> x - y         # FAILS!

Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    x - y
TypeError: unsupported operand type(s) for -: 'Subtract' and 'Subtract'
>>> x.__rsub__(y) # WORKS!
-5

Если я изменю __ rsub __ на __ sub __ , все заработает.

Что я делаю не так? Также какова цель этих обратных операторов?

8
задан Randy 21 September 2010 в 19:21
поделиться