Простой способ переопределить методы по умолчанию в пользовательских классах Python?

У меня есть класс с именем Cell:

class Cell:

    def __init__(self, value, color, size):
        self._value = value
        self._color = color
        self._size = size

    # and other methods...

Cell._value будет хранить строку, целое число и т. д. (для чего бы я ни использовал этот объект). Я хочу, чтобы все методы по умолчанию, которые обычно используют "значение" объекта, использовали ._ value , чтобы я мог:

>>> c1 = Cell(7, "blue", (5,10))
>>> c2 = Cell(8, "red", (10, 12))
>>> print c1 + c2
15

>>> c3 = Cell(["ab", "cd"], "yellow", (50, 50))
>>> print len(c3), c3
2 ['ab', 'cd']

# etc.

Я мог переопределить все методы по умолчанию:

class Cell:

    def __init__(self, value, color, size):
        # ...

    def __repr__(self):
        return repr(self._value)

    def __str__(self):
        return str(self._value)

    def __getitem__(self, key):
        return self._value[key]

    def __len__(self):
        return len(self._value)

    # etc.

... но есть ли более простой способ?

6
задан 2 revs 16 September 2010 в 12:53
поделиться