2

复合类:def init (self, realpart, imagpart): self.real = realpart self.imag = imagpart print self.real, self.imag

我得到这个输出:

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

但他为什么要打印最后一行?

4

4 回答 4

5

您从交互式 python 提示符运行代码,该提示符会打印出任何语句的结果,除非它是None.

尝试一下:

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

因此,您的调用Complex(3,2)是创建一个对象,而 python 正在将其打印出来。

于 2010-04-21T12:30:19.027 回答
3

因为它是语句“Complex(3,2)”的结果。换句话说,一个 Complex 对象被返回,交互式解释器将前一个语句的结果打印到屏幕上。如果您尝试“c = Complex(3, 2)”,您将禁止显示该消息。

于 2010-04-21T12:29:57.357 回答
3

因为类构造函数总是返回实例,然后你可以调用它的方法

inst = Complex(3,2)

inst.dosomething()
于 2010-04-21T12:34:21.113 回答
1

您想要的是定义__str__(self)并使其返回一个字符串表示形式(而不是打印一个)。

于 2010-04-21T12:32:31.713 回答