2

class Complex: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

クラスコンストラクターは常にインスタンスを返すため、その後そのメソッドを呼び出すことができます

inst = Complex(3,2)

inst.dosomething()
于 2010-04-21T12:34:21.113 に答える
3

それは、ステートメント「Complex(3,2)」の結果だからです。つまり、Complex オブジェクトが返され、対話型インタープリターが前のステートメントの結果を画面に出力します。「c = Complex(3, 2)」を試すと、メッセージが抑制されます。

于 2010-04-21T12:29:57.357 に答える
1

あなたが望むのは、定義__str__(self)して文字列表現を返すようにすることです(印刷しないでください)。

于 2010-04-21T12:32:31.713 に答える