печать экземпляра в Python - PullRequest
       7

печать экземпляра в Python

2 голосов
/ 21 апреля 2010
Комплекс класса

: def init (self, realpart, imagpart): self.real = realpart self.imag = imagpart печать self.real, self.imag

Я получаю этот вывод:

>>> Complex(3,2)
3 2
<__main__.Complex instance at 0x01412210>

Но почему он печатает последнюю строку?

Ответы [ 4 ]

5 голосов
/ 21 апреля 2010

Вы запускаете код из интерактивной подсказки Python, которая выводит результат любых операторов, если только это не None.

Попробуйте:

>>> 1
1
>>> 1 + 3
4
>>> "foobar"
'foobar'
>>> 

Итак, ваш вызов Complex(3,2) создает объект, а python распечатывает его.

3 голосов
/ 21 апреля 2010

Поскольку конструктор класса всегда возвращает экземпляр, после этого вы можете вызвать его метод

inst = Complex(3,2)

inst.dosomething()
3 голосов
/ 21 апреля 2010

Потому что это результат утверждения "Complex (3,2)". Другими словами, возвращается сложный объект, и интерактивный интерпретатор выводит на экран результат предыдущего оператора. Если вы попробуете "c = Complex (3, 2)", вы отключите сообщение.

1 голос
/ 21 апреля 2010

То, что вы хотите, это определить __str__(self) и сделать его вернуть строковое представление (не печатать одно).

...