Не может ссылаться на другие внутри метода, использующего self - python 3.6 - PullRequest
0 голосов
/ 04 июня 2019

Я задавался этим вопросом, и, похоже, не могу обернуть голову вокруг его части add ().если бы кто-нибудь мог мне помочь и объяснить это, я был бы очень признателен.особенно с другим параметром.Актуальный вопрос находится в Docstring методов.Я считаю, что метод str (self): метод верен, а метод init (self, m, b) также верен, но если нет, пожалуйста, исправьте меня.

class LinearPolynomial():
    def __init__(self, m, b):
        self.m = m
        self.b = b

    def __str__(self):
        """
        Returns a string representation of the LinearPolynomial instance
        referenced by self.

        Returns
        -------
        A string formatted like:

        mx + b

        Where m is self.m and b is self.b
        """
        string= '{}x + {}'
        return string.format(self.m,self.b)

    def __add__(self, other):
        """
        This function adds the other instance of LinearPolynomial
        to the instance referenced by self.

        Returns
        -------
        The sum of this instance of LinearPolynomial with another
        instance of LinearPolynomial. This sum will not change either
        of the instances reference by self or other. It returns the
        sum as a new instance of LinearPolynomial, instantiated with
        the newly calculated sum.
        """
        Cm= other.m + self.m
        Cb = other.b + self.b
        string= '{}x + {}'
        return string.format(Cm,Cb)

Ожидаемые результаты находятся в пределах документации методов.

1 Ответ

0 голосов
/ 04 июня 2019

Вам необходимо создать и вернуть новый LinearPolynomial объект, а не строку.Ваш метод должен также проверить тип другого операнда и вернуть значение NotImplemented, если оно не является LinearPolynomial

def __add__(self, other):
    if not isinstance(other, LinearPolynomial):
        return NotImplemented
    Cm = other.m + self.m
    Cb = other.b + self.b
    return LinearPolynomial(Cm, Cb) 
...