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>
しかし、なぜ彼は最後の行を印刷するのですか?
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>
しかし、なぜ彼は最後の行を印刷するのですか?
インタラクティブな python プロンプトからコードを実行すると、ステートメントの結果が出力されますNone
。
それを試してみてください:
>>> 1
1
>>> 1 + 3
4
>>> "foobar"
'foobar'
>>>
したがって、あなたの呼び出しComplex(3,2)
はオブジェクトを作成しており、python はそれを出力しています。
クラスコンストラクターは常にインスタンスを返すため、その後そのメソッドを呼び出すことができます
inst = Complex(3,2)
inst.dosomething()
それは、ステートメント「Complex(3,2)」の結果だからです。つまり、Complex オブジェクトが返され、対話型インタープリターが前のステートメントの結果を画面に出力します。「c = Complex(3, 2)」を試すと、メッセージが抑制されます。
あなたが望むのは、定義__str__(self)
して文字列表現を返すようにすることです(印刷しないでください)。