Python クラスの self

Self はクラスのインスタンスを表します。 self を使用すると、次のクラスの属性とメソッドにアクセスできます。 パイソン 。属性を指定された引数でバインドします。 self を使用する必要がある理由。これは、Python がインスタンス属性を参照するために @ 構文を使用しないためです。 パイソン メソッドが属するインスタンスは自動的に渡されるが、自動的には受け取られない方法でメソッドを実行することにしました。メソッドの最初のパラメータは、メソッドが呼び出されるインスタンスです。

Python での self の用途は何ですか?

Python でクラスを操作する場合、self という用語は、現在使用されているクラスのインスタンスを指します。クラスのインスタンス メソッドの最初のパラメータとして self を使用するのが通例です。から作成されたオブジェクトのメソッドを呼び出すたびに、 クラス の場合、オブジェクトは self パラメーターを使用して最初の引数として自動的に渡されます。これにより、オブジェクトのプロパティを変更し、その特定のインスタンスに固有のタスクを実行できるようになります。

Python3




class> mynumber:> > def> __init__(> self> , value):> > self> .value> => value> > > def> print_value(> self> ):> > print> (> self> .value)> obj1> => mynumber(> 17> )> obj1.print_value()>

出力:

17 

Python クラスのセルフ コンストラクター

クラスを操作する場合、Python ではクラス コンストラクターは次の名前の特別なメソッドであることを理解することが重要です。 __熱い__ クラスのインスタンス (オブジェクト) を作成するときに呼び出されます。このメソッドは、オブジェクトの属性を初期化するために使用されます。コンストラクターの self パラメーターは作成されるインスタンスを参照し、その属性にアクセスして設定できるようにすることに注意してください。これらのガイドラインに従うことで、Python で強力で効率的なクラスを作成できます。

Python3




class> Subject:> > def> __init__(> self> , attr1, attr2):> > self> .attr1> => attr1> > self> .attr2> => attr2> obj> => Subject(> 'Maths'> ,> 'Science'> )> print> (obj.attr1)> print> (obj.attr2)>

出力:

Maths Science 

Python の self はキーワードですか?

いいえ、 「自分」 ではありません キーワード Pythonで。 S elf> は、インスタンス自体を参照するためにインスタンス メソッドで使用されるパラメータ名にすぎません。

より明確に言うと、SELF には次のような特徴があると言えます。

Self: 現在のオブジェクトへのポインタ

self は常に現在のオブジェクトを指します。クラスのインスタンスを作成するときは、基本的に、独自の属性とメソッドのセットを持つオブジェクトを作成することになります。

Python3




class> check:> > def> __init__(> self> ):> > print> (> 'Address of self = '> ,> id> (> self> ))> obj> => check()> print> (> 'Address of class object = '> ,> id> (obj))>

出力:

Address of self = 140273244381008 Address of class object = 140273244381008 

例: 属性とメソッドを使用したクラスの作成

このコードは Python クラスを定義します car> 属性「モデル」と「色」を持つ車を表します。の __init__> コンストラクターは、インスタンスごとにこれらの属性を初期化します。の show> メソッドはモデルと色を表示し、属性への直接アクセスとメソッド呼び出しはインスタンス固有のデータ取得を示します。

Python3




class> car():> > > # init method or constructor> > def> __init__(> self> , model, color):> > self> .model> => model> > self> .color> => color> > > def> show(> self> ):> > print> (> 'Model is'> ,> self> .model )> > print> (> 'color is'> ,> self> .color )> > # both objects have different self which contain their attributes> audi> => car(> 'audi a4'> ,> 'blue'> )> ferrari> => car(> 'ferrari 488'> ,> 'green'> )> audi.show()> # same output as car.show(audi)> ferrari.show()> # same output as car.show(ferrari)> print> (> 'Model for audi is '> ,audi.model)> print> (> 'Colour for ferrari is '> ,ferrari.color)>

出力:

Model is audi a4 color is blue Model is ferrari 488 color is green Model for audi is audi a4 Colour for ferrari is green 

コンストラクターとメソッドにおける自己

Self は渡される最初の引数です コンストラクタ Instance Method.Self は、Instance メソッドとコンストラクターの First パラメーターとして指定する必要があります。指定しないとエラーが発生します。

Python3




# Self is always required as the first argument> class> check:> > def> __init__():> > print> (> 'This is Constructor'> )> object> => check()> print> (> 'Worked fine'> )> # Following Error is produced if Self is not passed as an argument> Traceback (most recent call last):> > File> '/home/c736b5fad311dd1eb3cd2e280260e7dd.py'> , line> 6> ,> in> > > object> => check()> TypeError: __init__() takes> 0> positional arguments but> 1> was given>

自己: キーワードではなく慣例

自己とは慣習であって、 Python キーワード 。 Self はインスタンス メソッドのパラメーターであり、ユーザーは代わりに別のパラメーター名を使用できます。ただし、self を使用することをお勧めします。これにより、コードの可読性が向上し、優れたプログラミングの実践にもなります。

Python3




class> this_is_class:> > def> __init__(in_place_of_self):> > print> (> 'we have used another '> > 'parameter name in place of self'> )> > object> => this_is_class()>

出力:

we have used another parameter name in place of self