Перегрузка метода "волхвов c" __str __ () - PullRequest
0 голосов
/ 05 марта 2020

Я пишу свой простой класс и хочу перегрузить метод str (), чтобы напечатать мой объект так, как я хочу. Так что проблема в том, что когда я пытаюсь print(c3), вывод неправильный: <class '__main__.Complex'>. Но когда я print(c1), это работает правильно. Не могли бы вы объяснить, в чем проблема?

class Complex:
    def __init__(self, a=0, b=0):
        self.re = a
        self.im = b

    def __str__(self):
        return '{}+{}*i'.format(self.re, self.im)

    def __repr__(self):
        return self.re, self.im

    def __add__(self, other):
        tmp = Complex
        tmp.re = self.re + other.re
        tmp.im = self.im + other.im
        return tmp

c1 = Complex(2, 4)
c2 = Complex(5, 6)
c3 = c1 + c2
print(c3)

1 Ответ

0 голосов
/ 05 марта 2020

Вы забыли скобки в

tmp = Complex()

в методе добавления

Они нужны вам для вызова конструктора, чтобы создать новое комплексное число, без того, чтобы просто назначить класс Complex для tmp, а не его экземпляр

Также, как указано deceze в комментариях

 return Complex(self.re + other.re, self.im + other.im)

лучше, вы передаете аргумент a и b конструктору для создания хорошего числа за один шаг

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...