テン、魔法のメソッド、プロパティとイテレータ

マジックメソッド:最初と最後の2つのアンダースコアです

特性(プロパティ)

イテレータ(反復子)

1、コンストラクタ

    コンストラクタは、すなわち、初期化メソッドは、単に__init__という名前。

    オブジェクトが作成された後、通常のローカルコンストラクタメソッドとは異なり、自動的に呼び出されます。

    Pythonでは、コンストラクタは非常に簡単です__init__できる魔法の普通のバージョンからのinitメソッドのinit変更の名前だけを作成します。

    注:Pythonの魔法の方法の全てにおいて、__ init__は通常、最も使用されています。

    拡張子:Pythonはマジック__del__の方法を提供し、また呼ばれるデストラクタ(デストラクタ)、オブジェクト内のメソッドが破壊される(ガーベッジコレクション)の前に呼び出されます。

    

  1.1従来の方法と特別なコンストラクタをオーバーライド

    

    

 

 

 

    コンストラクタをオーバーライドするときは、スーパークラス(継承されたクラス)のコンストラクタを呼び出す必要があります、またはそれが適切に初期化されたオブジェクトではないかもしれません。

    スーパークラスのコンストラクタを呼び出すための2つの方法があります。スーパークラスのコンストラクタが関連付けられていない呼び出し、スーパー関数の使用。

  スーパークラスのコンストラクタを呼び出す1.2関連付けられていません

    

 

 

    自動的に(関連するメソッドが呼び出されている)に連結された自己パラメータの方法、例えば呼ば例

    (例えばBRID .__ init__)メソッドを呼び出すことによってクラスは、それに関連付けられたインスタンスは、この方法は、会合していないと呼ばれていません。

    この自己引数が現在のインスタンスメソッドにリンクされていないことにより、すなわち、(例えばBRID .__ INIT __(自己))、オブジェクトを初期化するために、スーパークラスのコンストラクタを達成するために(例えば、SongBrid) 

  1.3使用スーパー

    

 

 

2、要素へのアクセス

  2.1基本シーケンスとマッピングプロトコル

    そして、それらの基本的な動作(プロトコル)を達成するためのシーケンス実質的組要素(アイテム)を、マッピング二不変オブジェクトは、メソッドは、4つの可変オブジェクトを実装する必要性を実装する必要があります。

    __(自己)__len:この方法は、配列のコレクションに含まれる項目の数を返す結合マッピングするために、要素の数である-対数値を。__len__リターンがゼロの場合、オブジェクトはブールコンテキストで偽と見なされます。

    __getitem __(自己、キー):このメソッドは、指定されたキーに関連付けられた値を返します。シーケンスキーシーケンスの長さN(負でもよい)0-N-1の整数、マッピングであるべきで、キーは、任意のタイプであってもよいです。

    __setitem __(自己、キー、値 ): このメソッドは、__getitem__を得るために後に使用される格納されたキーに関連する値に関連付けられるべきです。変数がオブジェクトの場合にのみ、このメソッドを実装する必要があります。

    __delitem __(自己、キー):このメソッドは、オブジェクトの構成の__del__ステートメントを使用している場合、キーに関連付けられた値を削除すべきと呼ばれています。オブジェクト変数、および)はそのエントリが削除されることができた場合のみ、このメソッドを実装する必要があります。  

    

  派生リスト、辞書、とstrから2.2

    

 

 

     

    ほとんどの点と同様のリストでCounterList行動クラスが、それは、アクセスリストでは、プロパティの値が1ずつ増加しますとき、新しいカウンタ属性です。

    標準ライブラリでは、コレクションモジュールは、抽象と具象のための基本クラスを提供していますが、ビルトインタイプ(リスト、辞書とstr)を継承することができます       

 

図3に示すように、特性

    多くの場合、特性(proprety)と呼ばれるアクセス方式によって定義されます。

  3.1機能プロパティ

      

 

 

       (最初の取得方法において、設定した後)のパラメータとしての機能を呼び出すことにより、サイズ特性及びアクセス性に特徴的な、その後、関連する名前を作成します。

      プロパティ関数が呼び出され、指定されたパラメータを指定三つのパラメータまたは指定四つのパラメータというパラメータを指定することもできます。

      あなたが任意のパラメータを指定しない場合、特性はそれが読めるでも書き込みではありませんが作成されます。

      もし一つだけのパラメータ(取得方法)、作成したプロパティは読み取り専用になります。

      第三のパラメータはオプションであり、(この方法は、任意のパラメータを受け付けない)属性を削除するために使用される方法を指定します。

      第四パラメータはオプションで、文書の文字列を指定します。

      パラメータはFGET、FSET、FDELおよびドキュメントを命名しています。

      説明:新しいクラスのために、特性ではなく、アクセス方法を使用する必要があります。

    

  3.2静的メソッドとクラスメソッド

      静的メソッドとクラスメソッドは作成します。彼らは、staticmethodとクラスメソッドクラスのオブジェクトにパッケージ化されました。

      静的メソッドを定義することは、自己が、直接クラスによって呼び出すことができるパラメータを取りません。

      パラメータのクラスを定義する方法を含むが、クラスのメソッドのために、オブジェクトを直接呼び出すことができ、通常名前CLS自己に類似しているが、パラメータが自動的にクラスCLSに関連付けられています。

      

      任意の装飾的なオブジェクトが呼び出されることができ、メソッドや関数で使用することができるパッケージ化するために使用することができます。

      この目的(又は機能)のための方法で(代わりデコレータの複数のアプリケーションに列挙される順番を指定)することができる1つまたはそれ以上の装飾を指定することができるこれらの装飾を使用して、オペレータ@上記に記載されています。

      

     

  3.3 __getattr __、__ setattr__のような        

    あなたがオブジェクトのプロパティの試みへのすべてのアクセスをブロックすることができ、その目的の一つは、古いクラスの特性を達成することです。

    プロパティがアクセスされたときにコードの一部を実行するには、いくつかの魔法のメソッドを使用する必要があります。

    __getattribute __(自己、名):プロパティがアクセスされたときに自動的に(唯一の新しいクラス)を呼び出します

    __getattr __(自己、名):自動的にプロパティがアクセスされたときに呼び出されると、オブジェクトがそのようなプロパティではありません

    __setattr __(自己、名前、値):プロパティの割り当てを与えるためにしようとしたときに自動的に起動

    __delattr __(自己、名):削除のプロパティにしようとしたときに自動的に呼び出されます

4、イテレータ

  4.1イテレータプロトコル

      __iter__オブジェクトが実装する方法方法は__next__オブジェクトイテレータ達成される、反復的です。

      

 

 

      反復可能オブジェクトの機能内蔵のITERを呼び出すことにより、イテレータを取得しました。

      

 

 

 

  4.2イテレータからシーケンスを作成

      

5、発電機

  これは、イテレータの機能を定義するための共通の構文を使用して生成されます。

  Yield関数は、文が発電機として知られているが含まれています。

  発生器は、戻り値を返すために使用されていないが、複数の値を生成することができます。

  

 

 

  5.1再帰ジェネレータ

    

    :平ら呼び出すときに、次の2つの可能性があるベースライン条件再帰条件を

  一般的なビルダー5.2

    イテレータジェネレータ機能及びジェネレータ:ジェネレータは、2つの別個の部分からなります。

    ファンクション・ジェネレータは、歩留まりを備えDEF文で定義されています。

    イテレータジェネレータは、この関数によって返された結果です。

    

 

 

  5.3メソッド・ビルダー

    送信:外の世界には、この方法により、発電機にアクセスすることができます。

    スロー:例外は(降伏式で)ビルダーでスローされる例外を提供することができたときにコールタイプ、オプションの値とトレースバックオブジェクト。

    クローズ:あなたが呼び出すときに引数を与えることなく、発電を停止します。

 

おすすめ

転載: www.cnblogs.com/nuochengze/p/12445944.html