スポンサーリンクスポンサーリンク無料でプログラマへ!30歳までなら無料でプログラミング学校に通うことが出来ます。下の画像をクリックして無料相談会でGO!Pythonオブジェクト指向Pythonは誕生して以来、オブジェクト指向言語です。このため、クラスとオブジェクトの作成と使用は非常に簡単です。この章では、Pythonのオブジェクト指向プログラミングについて理解をしていきます。オブジェクト指向(OO)プログラミングに関する以前の経験がない場合は、その入門コースまたは入門チュートリアルを参照して、基本的な概念を把握してください。ここではまずオブジェクト指向プログラミング(OOP)を理解しますOOP用語の概要クラス:任意のオブジェクトを特徴付ける一連の属性を定義するオブジェクトのユーザー定義プロトタイプ。人間というクラスがあれば、人間の中には太郎や花子がいるくらいの感覚ですクラス変数:すべてのインスタンス間で共通した値をもつ変数です。クラス変数はインスタンスを生成することなく参照することができます。データメンバー:クラスおよびそのオブジェクトに関連付けられたデータを保持するクラス変数またはインスタンス変数。関数のオーバーロード:特定の関数に複数の動作を割り当てる。実行される操作は、関連するオブジェクトまたは引数のタイプによって異なります。インスタンス変数:メソッド内で定義され、クラスの現在のインスタンスにのみ属する変数。継承:クラスの特性をそれから派生した他のクラスに移す。特定のクラスの個々のオブジェクト。Circleクラスに属するオブジェクトobjは、Circleクラスのインスタンスです。インスタンス化:クラスのインスタンスの作成。メソッド:クラス定義で定義される特別な種類の関数。オブジェクト:クラスによって定義されたデータ構造の一意のインスタンス。オブジェクトは、データメンバー(クラス変数とインスタンス変数)とメソッドの両方を含みます。演算子のオーバーロード:特定の演算子に複数の関数を割り当てる。クラスの作成クラスステートメントで、新しいクラス定義を作成します。doc__でアクセスできます。class_suiteは、クラスメンバー、データ属性と機能を定義するすべてのコンポーネントの文で構成されています。以下は、簡単なPythonクラスの例です。self.salary変数empCountは、このクラスのすべてのインスタンスで値が共有されるクラス変数です。これは、クラス内またはクラス外からEmployee.empCountとしてアクセスできます。__()は特別なメソッドです。これは、このクラスの新しいインスタンスを作成するときにPythonが呼び出すクラスコンストラクタまたは初期化メソッドと呼ばれます。各メソッドの最初の引数がselfであることを除いて、通常の関数のような他のクラスメソッドを宣言します。Pythonはself引数をリストに追加します。メソッドを呼び出すときに含める必要はありません。インスタンスオブジェクトの作成クラスのインスタンスを作成するには、クラス名を使用してクラスを呼び出し、__init__メソッドが受け入れる引数を渡します。5000)属性へのアクセスオブジェクトのドット演算子を使用してオブジェクトの属性にアクセスします。クラス変数は、次のようにクラス名を使用してアクセスされます。Employee.empCount上記のコードを実行すると、次の結果が生成されます。2クラスやオブジェクトの属性は、いつでも追加、削除、変更できます。attribute.属性にアクセスするために通常のステートメントを使用する代わりに、次の機能を使用できます。:オブジェクトの属性にアクセスします。hasattr(OBJ、名):属性が存在するかどうかをチェックします。SETATTR(OBJ、名前、値):属性を設定します。属性が存在しない場合は作成されます。delattr(OBJ、名):属性を削除します。'age'組み込みクラス属性すべてのPythonクラスは組み込みの属性を継承しており、他の属性と同様にドット演算子を使用してアクセスできます。__dict__:クラスの名前空間を含む辞書。__doc__:クラスのドキュメント文字列または未定義の場合はnone。__name__:クラス名。__module__:クラスが定義されているモジュール名。“__main__”です。__bases__:基底クラスを含む、おそらく空のタプル。基底クラスリストでの出現の順序。上記のクラスでは、これらのすべての属性にアクセスしようとします。Employee.__dict__上記のコードを実行すると、次の結果が生成されます。0xb7c846bc>}オブジェクトの破棄(ガベージコレクション)Pythonは不要なオブジェクト(組み込み型やクラスインスタンス)を自動的に削除してメモリ空間を解放します。Pythonが定期的に使用していないメモリブロックを定期的に再利用するプロセスをガベージコレクションと呼びます。Pythonのガベージコレクタは、プログラムの実行中に実行され、オブジェクトの参照カウントがゼロになるとトリガされます。オブジェクトの参照カウントは、それを指す別名の数が変化すると変化します。オブジェクトの参照カウントは、新しい名前が割り当てられたり、コンテナ(リスト、タプル、または辞書)に配置されると増加します。オブジェクトの参照カウントがdelで削除されたり、その参照が再割り当てされたり、その参照が有効範囲外になったりすると、オブジェクトの参照カウントは減少します。オブジェクトの参照カウントがゼロになると、Pythonはそれを自動的に収集します。<40>ガベージコレクタが孤立したインスタンスを破棄し、その領域を再利用するとき、通常は気付かないでしょう。__()を実装できます。デストラクタは、インスタンスが破棄されるときに呼び出されます。このメソッドは、インスタンスによって使用される非メモリリソースをクリーンアップするために使用されます。__()デストラクタは、破壊しようとしているインスタンスのクラス名を出力します。pt3上記のコードが実行されると、次の結果が生成されます。destroyed注意:理想的には、クラスを別々のファイルで定義し、import文を使用してメインプログラムファイルにインポートするのが理想的です。最初から始めるのではなく、新しいクラス名の後のカッコ内に親クラスをリストすることによって、既存のクラスからクラスを派生させてクラスを作成することができます。子クラスはその親クラスの属性を継承し、それらの属性は子クラスで定義されているかのように使用できます。子クラスは、親からのデータメンバーおよびメソッドをオーバーライドすることもできます。派生クラスは親クラスと同じように宣言されます。継承元の基本クラスのリストは、クラス名の後に指定されます。method上記のコードを実行すると、次の結果が生成されます。200同様に、次のように複数の親クラスからクラスを駆動することができます。B.....issubclass()またはisinstance()関数を使用して、2つのクラスおよびインスタンスの関係をチェックできます。issubclass(サブ、SUP)所与のサブクラス場合ブール関数は真を返すサブ実際スーパークラスのサブクラスであるSUP。isinstance(OBJ、クラス)場合ブール関数は真を返すobjがクラスのインスタンスであり、クラスまたはクラスのサブクラスのインスタンスでありますメソッドのオーバーライド親クラスのメソッドはいつでもオーバーライドできます。親のメソッドをオーバーライドする理由の1つは、サブクラスで特別な機能や異なる機能が必要な場合があるからです。method上記のコードを実行すると、次の結果が生成されます。methodベースオーバーロードのメソッド次の表は、独自のクラスでオーバーライドできるいくつかの一般的な機能を示しています。__cmp__(self、x)オブジェクトの比較サンプルコール:cmp(obj、x)演算子のオーバーロード2次元ベクトルを表すVectorクラスを作成したとします。プラス演算子を使用して追加するとどうなりますか?ほとんどの場合、Pythonはあなたに叫ぶでしょう。クラス内で__add__メソッドを定義してベクトルを加算すると、プラス演算子は期待通りに動作します。v2上記のコードを実行すると、次の結果が生成されます。Vector(7,8)データ非表示オブジェクトの属性は、クラス定義の外側に表示される場合と表示されない場合があります。二重アンダースコアの接頭辞を持つ属性に名前を付ける必要があります。これらの属性は、外部から直接見ることはできません。counter.__secretCount上記のコードを実行すると、次の結果が生成されます。'__secretCount'Pythonはクラス名を含むように内部的に名前を変更することによってそれらのメンバーを保護します。object._className__attrNameなどの属性にアクセスできます。counter._JustCounter__secretCount上記のコードを実行すると、次の結果が生成されます。ルーティングの設定をしてみよう。PINGを飛ばしてみよう。ルーティングの設定をしてみよう。PINGを飛ばしてみよう。