Должен ли метод класса __iadd__ всегда сохранять класс типа? - PullRequest
2 голосов
/ 15 мая 2019

Я искал явный ответ, но самый близкий результат был в документации по питону здесь . Там написано:

Эти методы [дополненных арифметических назначений] должны пытаться выполнить операцию на месте (изменяя свое значение) и возвращать результат (который может быть, но не обязательно, собственным).

Это подразумевает, что self (и тип) неизменны, но действительно ли разработчик класса должен определить, или должна быть предпринята попытка всегда поддерживать тип?

Я знаю, что должен - это вопрос мнения. То, что я ищу, - это лучшее документированное свидетельство ожидаемого результата.

Возьмите класс NumString ниже.

class NumString:
    """A class where the number is represented as a string.

    other methods omitted for brevity.
    """
    def __init__(self, value):
        self.value = str(value)

    def __str__(self):
        return self.value

    def __int__(self):
        return int(self.value))

    def __add__(self, other):
        if '.' in self.value:
            return float(self) + other
        return int(self) + other

    def __iadd__(self, other):
        self.value = str(self + other)
        return self
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...