2

私は (MATLAB から) Python を初めて使用し、プログラムをモジュール化するための優れた方法としてクラスを使用することを学び始めていました。プロセスを効率化するための「設計図」のようなものだとは理解していますが、それについての私の理解は間違っていると思います。私はドキュメントを読んでいて、この例に出くわしました:

class Complex:
    def __init__(self, realpart, imagpart):
        self.r = realpart
        self.i = imagpart

x = Complex(3.0, -4.5)
x.r, x.i

の出力で

(3.0, -4.5)

そして、それは私を困惑させました。として知られている、realpartまたはimagpart渡される関数はありませんが、名前が変更されriすぐに機能します。それらは関数に組み込まれているようにも見えません。調子はどうrealpartですかimagpart

注: あいまいなタイトルとタグで申し訳ありませんが、これが何と呼ばれるかはよくわかりません。提案をいただければ幸いです。

4

2 に答える 2

3

realpart と imagpart はどのように機能していますか?

それらは何もしていません。それらは への引数に付けられた名前にすぎません__init__apple必要に応じて、それらを呼び出すことができますpear。入力するとき

x = Complex(3.0, -4.5)

__init__次の 3 つの引数が渡されます。

def __init__(self, realpart, imagpart):

インスタンス自体 (伝統的に と呼ばれるself)、渡された最初の明示的な引数 (3.0)、および渡された 2 番目の明示的な引数 (-4.5)。次に、これらをインスタンス変数として と に格納しself.rますself.i

于 2012-06-28T19:10:42.377 に答える
3

realpartおよびimagpartは、クラス初期化子への引数__init__です。を呼び出すとComplex(3.0, -4.5)、これらの引数がその関数に渡されます。関数はたまたまオブジェクトにいくつかの属性を設定して、それらの引数の値を保存します。それは行でこれを行います

    self.r = realpart
    self.i = imagpart

これらの行は、オブジェクトに属性を作成します。というオブジェクトを作成するとx、これらの属性は および としてアクセス可能にx.rなりx.iます。

realpart および imagpart と呼ばれる「関数」について質問している理由がわかりません。それらは単なる通常の変数です。

Python チュートリアルを読んで、Pythonの基本を理解してください。

于 2012-06-28T19:10:53.203 に答える