Python における Self とは: 実際の例
Python における Self とは: 実際の例
Python でクラスを作成するときに、よく「Python 」という用語に遭遇することがあります'self.'
。これは、初心者が Python プログラミング言語のオブジェクト指向機能を深く理解するときに理解する必要がある重要な概念です。
パラメータself
は、クラスの現在のインスタンスを参照します。これを使用して、そのクラスに属する属性およびメソッドにアクセスできます。
この Python チュートリアルでは、self
変数が Python クラスでどのように重要な役割を果たすかを見ていきます。また、 を使用してコードの明瞭さ、モジュール性、再利用性を維持する方法についても説明しますself
。
目次
Python で自己を理解する
Python は、クラスとオブジェクトに大きく依存するオブジェクト指向プログラミング (OOP)言語です。したがって、パラメータに入る前にself
、まずオブジェクト指向プログラミングとは何かを理解する必要があります。
Python によるオブジェクト指向プログラミング
チョーク書き込み – OOP、オブジェクト指向プログラミング " data-medium-file="https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1-300x200.jpg" data- large-file="https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1.jpg" decoding="async"loading="lazy" src="https: //blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1.jpg" alt="Python における Self とは何ですか。" class="wp-image-206807" width=" 709" height="472" srcset="https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1.jpg 612w、https://blog.enterprisedna.co /wp-content/uploads/2023/04/istockphoto-147480805-612x612-1-300x200.jpg 300w、https://blog.enterprisedna.co/wp-content/uploads/2023/04/istockphoto-147480805-612x612-1-560x372.jpg 560w" sizes="(max-width: 709px) 100vw, 709px">
オブジェクト指向プログラミングは、プログラマがクラスとオブジェクトを使用して現実世界の概念と関係をモデル化するのに役立ちます。これにより、より構造化され、再利用可能で、スケーラブルなコードが得られます。
クラスは、事前定義されたプロパティとメソッドを持つオブジェクトを作成するためのテンプレートと考えてください。また、オブジェクトは、属性の独自の値を格納し、クラス関数にアクセスできるクラスのインスタンスです。
これら 2 つの概念は、多くのPythonアプリケーションにおける重要な構成要素です。このビデオ「Python Faker Library でデータを簡単に作成する方法」では、クラスとオブジェクトの両方が動作している様子をご覧いただけます。
Python Self の役割
Self
Python のクラスのインスタンスへの参照です。これにより、クラス独自のスコープ内でクラスの属性とメソッドにアクセスして変更できるようになります。
Python でのの使用に関する重要なポイントをいくつか示しますself
。
Self
は、Python 構文の予約キーワードではありません。クラス インスタンスを識別するために他の名前を使用することもできますが、self
これが Python プログラマによって最も広く使用され、受け入れられている規則です。Self
は、クラスの現在のインスタンスを参照するためのインスタンス メソッドの最初のパラメーターとして使用されます。self
、インスタンス属性とローカル変数を区別できるため、コードが読みやすくなり、バグが少なくなります。self
コンストラクター内でパラメーターを宣言し__init__()
、クラス内の後続のすべての関数コンストラクターを宣言する必要があります。そうしないと、プログラムが をスローすることになりますtypeerror
。class Person: def __init__(self): print('welcome') def show_person(): print('I love pandas.') a = Person() b = a.show_person() Traceback (most recent call last): File "person.py", line 10, in trill = b.show_person() ^^^^^^^^^^^^^^^^^^ TypeError: Person.show_person() takes 0 positional arguments but 1 was given
注:self
Python 3 が提供する静的メソッド機能を使用すると、関数内でパラメーターを使用することを回避できます。これについては後のセクションで詳しく説明します。
自己と取り組む
self
Python でクラスを構築するには、使い方を学ぶことが非常に重要です。このセクション全体を通じて、クラスとオブジェクトを操作する際のさまざまなシナリオでの使用方法を学習しますself
。
「__init__()」によるオブジェクトの初期化
クラスの新しいインスタンスを作成するとき、__init__()
オブジェクトの属性を初期化するためにメソッドが呼び出されます。この__init__()
メソッドはクラス コンストラクターであり、self
パラメーターを最初の引数として受け取ります。
このパラメータself
は、インスタンス属性を指定された引数に関連付けるためにこのメソッド内で使用されます。
以下に例を示します。
class Person: def __init__(self, name, age): self.name = name self.age = age person1 = Person("Alice", 30)
この例では、メソッドはオブジェクトの初期化中に 、 、および をパラメータとして受け取ります。このパラメータはクラス インスタンスを参照し、作成される特定のオブジェクトのおよび属性を設定できるようにします。 init
self
name
age
self
name
age
メソッドでの Self の使用
クラスでインスタンス メソッドを定義する場合は、self
最初のパラメータとして含める必要があります。これにより、クラス内のインスタンス属性やその他のメソッドにアクセスできるようになります。
前の例をさらに拡張してみましょう。
class Person: def __init__(self, name, age): self.name = name self.age = age def introduce(self): print("Hello, my name is " + self.name + " and I'm " + str(self.age) + " years old.") person1 = Person("Alice", 30) person1.introduce()
この例では、メソッドには最初のパラメータとして がintroduce()
含まれています。self
これにより、オブジェクトの名前と年齢属性にアクセスし、パーソナライズされた紹介文を作成できるようになります。
コード内でメソッドを呼び出す場合、
self
パラメーターを明示的に渡す必要はありません。Python が自動的に処理します。
これらのガイドラインに従い、 Pythonself
のの目的を理解することで、初心者でもクラスとオブジェクトを効果的に操作できるようになります。これにより、読みやすく保守しやすい、適切に構造化されたコードを作成できるようになります。
一般的な自己使用例
Python コードでキーワードを使用する方法はたくさんあります。これらのユースケースを理解することで、プログラムで効果的に活用できるようになります。 self
self
それらのいくつかを見てみましょう:
クラス属性へのアクセス
の主な用途の 1 つはself
、クラス内のインスタンス属性にアクセスすることです。インスタンス属性は、クラスから作成されたオブジェクトに固有であり、オブジェクトのデータを保存します。
を使用すると、self
クラス メソッド内でこれらの属性を操作したりアクセスしたりできます。例を見てみましょう:
class Dog: def __init__(self, name, age): self.name = name self.age = age def display_name(self): print("The dog's name is:", self.name)
この例では、メソッドself
内で Dog オブジェクトの name 属性にアクセスしますdisplay_name
。
クラスメソッドの呼び出し
もう 1 つの一般的な使用例は、self
インスタンス メソッド内から他のクラス メソッドを呼び出すことです。これにより、コードを再利用し、複雑さを軽減し、読みやすさを向上させることができます。
self
特定のインスタンスに対して正しいメソッドが確実に呼び出されるようにするため、他のメソッドを参照するときに使用することが不可欠です。次の例を考えてみましょう。
class Bird: def __init__(self, species, color): self.species = species self.color = color def show_species(self): print("The bird species is:", self.species) def show_info(self): self.show_species() print("The bird color is:", self.color)
上記の例では、メソッド内からメソッドをself
呼び出すために使用します。これにより、1 回の呼び出しで鳥の種類と色を表示できるようになります。show_species
show_info
最後に、self
インスタンス属性にアクセスし、クラス メソッドを呼び出すときに必ず使用してください。これらの使用例を理解すると、より効率的で組織化された Python コードを作成できるようになります。
ベストセルフプラクティス
作業する場合、self,
コードの問題やバグを避けるために従う必要のある規則がいくつかあります。ここではその一部を紹介します。
Self を使用する場所
インスタンス メソッドを定義するときは、常にこのself
パラメーターを最初のパラメーターとして使用します。これにより、オブジェクトのインスタンス属性にアクセスして変更したり、クラス内の他のインスタンス メソッドを呼び出したりできるようになります。
self
Python でオブジェクト インスタンスを操作するときに使用することが重要です。これを使用すると、一貫した動作が確保され、オブジェクトの適切なカプセル化が可能になります。
たとえば、次のクラスについて考えてみましょう。
class MyClass: def __init__(self, my_var): self.my_var = my_var
ここでは、メソッド内で self パラメータを使用して、オブジェクト インスタンスの属性__init__
を初期化します。my_var
このようにして、はインスタンス固有の属性になります。 my_var
その結果、クラスの他のメソッドで自己参照を使用してアクセスし、変更することができます。
自分自身の命名規則
self
は Python でインスタンスに使用される従来の名前ですが、技術的には任意の名前を使用できます。ただし、明確にし、より広範な Python コミュニティとの一貫性を保つために、self を使用することを強くお勧めします。
別の名前を使用すると、特に Python ライブラリの標準的な命名規則に慣れている場合、コードを読んだり操作したりする人に混乱が生じる可能性があります。
Self を使用してはいけない場所
self
パラメータがオブジェクト インスタンスへのアクセスを提供することはすでにわかっています。ただし、場合によっては、クラス内の一部の関数がオブジェクト インスタンスにアクセスする必要がない場合があります。
このシナリオでは、self パラメーターは必要ありません。そのため、Python は self パラメーターをバイパスするための静的メソッド機能を提供します。
以下に例を示します。
class Car: @staticmethod def print_car(): print('Vroom Vroom')
上の例では、関数デコレーターがメソッド内のパラメーター要件@staticmethod
をオーバーライドします。self
こうすることで、オブジェクト インスタンスが渡されない場合でも関数は実行されます。
結論
要約すると、Python の self パラメーターはクラスのインスタンスを参照し、その属性とメソッドにアクセスできるようにします。Python 開発者として、self の目的とクラスやオブジェクトでのその使用法を理解することが重要です。
コード内で self を一貫して使用することで、可読性と保守性が向上し、作業全体の品質が向上します。
また、この用語は "self"
Python で頻繁に使用されることがありますが、Python の予約済みキーワードではないことに注意してください。これは、 JavaScript や Javaなどのプログラミング言語とは異なります( は"this"
予約キーワードです)。
クラスメソッドの最初のパラメータには好きな名前を付けることができます。「self
」は単に推奨される規則です。
Python プログラマーの間で常に浮かぶ質問があります。 self は実際に Python のキーワードですか?
self がキーワードとみなされている C++ などの他のプログラミング言語とは異なり、Python ではプログラマーが従う傾向にある規則です。これは基本的にメソッド定義のパラメータです。ただし、自分自身の代わりに、 別の または 私
それを理解するために例を見てみましょう。
class myClass: def show(another): print(“another が self の代わりに使用されます”)
このコードを Python クラスのセルフ コンストラクターのコードと比較すると、ここでは 別の 名前を使用していることがわかります。 自分の場所。次に、このクラスのオブジェクトを作成して出力を確認してみましょう。
object = myClass() object.show()
self 変数の代わりに別の名前を使用した場合でも、プログラムが動作することがわかります。これは、self 変数とまったく同じように機能します。
Python における Self とは: 実際の例
R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。
この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。
このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。
この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。
LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。
LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。
このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。
これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。
LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて