Pythonのオブジェクト指向|クラスのメンバ

のサブ分類のメンバーの組成

我々は話をする前に、大きく二つのクラスの地域、静的フィールドとメソッドの部分部分に分け。

 

各領域の詳細な内訳を分けることができます。

クラスA:

    会社 = " アリババ"           #の静的変数(staticフィールド)
    __tel = " XXXXXXX "             プライベート静的変数(プライベート静的フィールド)

    DEF  __init__(セルフ、名前、年齢):  特殊な方法(初期化するための方法) 
        self.name名前=           オブジェクト属性(ノーマルフィールド) 
        。自己__age =年齢           プライベートオブジェクトの属性(共通プライベートフィールド)

    DEFの func1の(自己):              従来の方法
        

    DEF  __func(セルフ):             プライベートメソッドの
        印刷(666 

    @classmethod                   #のクラスメソッド
    DEFのclass_func(CLS)は:
         "" " クラス・メソッドを定義し、少なくとも一つのパラメータCLS " "" 
        印刷' クラスメソッド' 

    @staticmethod                   静的メソッド
    DEFを()static_funcを:
         "" " 静的メソッドを定義し、なしデフォルトパラメータ「」 " 
        印刷静的メソッド

    @Property                       #の属性
    DEFの小道具(セルフ):
         パス

 

 

II。クラスのプライベートメンバー

各クラスのメンバーのために2つの形式があります。

  公共のメンバーは、どこからでもアクセスすることができます

  プライベートメンバーメソッドの内部で、唯一のクラス

パブリックアクセスのプライベートメンバーと異なるのメンバーを制限

 

1.プロパティ

  静的プロパティ

  オブジェクトのプロパティ

 

静的フィールド(静的プロパティ)

  パブリック静的フィールド:クラスがアクセスすることができ、内部クラスがアクセスでき、派生クラスの缶アクセス

  プライベート静的フィールド:内部クラスのみアクセスすることができます。

 

パブリック静的プロパティ(フィールド)

クラスC: = " パブリック静的フィールド" 

    DEF FUNC(セルフ):
         プリントc.nameの

クラスD(C):
     DEF ショー(セルフ):
         プリントc.name 

c.nameの              #のクラスのアクセス

OBJ = C()
obj.func ()         内部クラスがアクセスできる

obj_son = D()
obj_son.show()     派生クラス缶のアクセスを

プライベート静的な属性(フィールド)

クラスC:
     __name__ = " プライベート静的フィールド" 

    DEF FUNC(セルフ):
         印刷 C. __name__ 


クラス:D(C)
     DEF ショー(セルフ):
         印刷 C. __name__ 

C. __name__        アクセスできない外

OBJ = C()
OBJ 。__name__       アクセス不能外部 
obj.func()         内部クラスがアクセスできる    

obj_son = D()
obj_son.show()     は、派生クラスにアクセスできない  

パブリック・オブジェクトのプロパティ

クラスC:
     DEF  __init__ (セルフ):
        self.foo = " パブリックフィールド" 

    DEF FUNC(セルフ):
         印刷 self.fooの   内部アクセスカテゴリの


クラスD(C):   
     DEF ショー(セルフ):
         プリントself.foo派生クラス#アクセス

OBJ = C()

obj.foo      アクセスされたオブジェクトを介して 
obj.func()  内部アクセスクラス

obj_son = D(); 
obj_son.show()  派生クラスのアクセス

プライベートオブジェクト属性

クラスC:
     DEF  __init__ (自己): 自己__foo = " プライベートフィールド" 

    DEF FUNC(セルフ):
         印刷 self.fooの   に内部クラスアクセス


クラスD(C):
     DEF ショー(セルフ):
         印刷self.fooの#派生クラスアクセス

OBJ = C()

OBJ。__fooの     >エラー==オブジェクトへのアクセスを介して 
obj.func()  クラス内部アクセス==>正しい

obj_son = D(); 
obj_son.show()  派生クラスアクセス==>エラー

 

2.方法

  オブジェクトにアクセスすることができ、内部のアクセス・クラス、派生クラス缶アクセス:パブリックメソッド

  プライベートメソッド:内部クラスのみアクセスすることができます。

(1)パブリックメソッド

クラスC:
     DEF  __init__ (セルフ):
         パス
    
    DEF 追加(セルフ):
         印刷' Cで' 


クラスD(C):
     DEF ショー(セルフ):
         印刷' Dにおける' 
        
    DEF FUNC(セルフ):
        セルフ。ショー()
OBJ = D()
obj.show()  オブジェクトを介してアクセス    
obj.func()  内部アクセスクラス     
obj.add()  は、クラスアクセス由来

(2)プライベートメソッド

クラスC:
     DEF  __init__ (セルフ):
         パス

    DEFは __add :(セルフ)
         を印刷' Cで' 


クラスD(C):
     DEF  __show (セルフ):
         印刷' Dにおける' 

    DEF FUNC(セルフ):
        自己を。__show ()
OBJ = D()
OBJ。__show()  は、オブジェクトを介してアクセスすることができない 
obj.func()  内部アクセスクラス 
OBJ。__add()   派生クラスにアクセスすることはできません

概要:これらの民間メンバーのために、彼らは唯一のクラス内で使用、あなたは外で使用するクラスと派生クラスにすることはできません。

それはオブジェクト._クラス__属性名も、間違いなくすることができない、アクセスのプライベートメンバーに持っている!なぜアクセスにクラス名の__プライベートメンバーを._することができ、それ?あなたがプライベートメンバが発生した場合には、クラスを作成するときにするのでクラスの名前_が先行する場合(プライベート静的フィールド、通常のフィールドプライベート、独自の方法を含む)が自動的にメモリに保存されます。

 

III。クラスの他のメンバー

このクラスの他のメンバーは、mainメソッドです。

メソッドが含まれます:一般的な方法、静的メソッドとクラスメソッドを、すべてのメモリ内のクラスに属する3つの方法は、さまざまな方法で差嘘を呼び出します。

方法の例

    定義:最初のパラメータオブジェクトのインスタンスである、パラメータ名は、一般的に「自己」として合意され、インスタンスのプロパティとメソッドを通過する(あなたはまた、プロパティおよびメソッドなどを送信することができます)。

    コール:唯一のオブジェクトのインスタンスで呼び出すことができます。

クラスメソッド

    定義:デコレータ@classmethod。最初の引数は、それを通しての特性とクラスの(インスタンス属性およびメソッドを渡さない)方法を渡すために、クラス・オブジェクトが、現在は、このパラメータは、一般名「CLS」に同意されなければなりません。

    コール:クラスのインスタンスオブジェクトとオブジェクトを呼び出すことができます。

staticメソッド

    定義:デコレータ@staticmethod。ランダムパラメータ、ない「自己」と「CLS」パラメータが、この方法は、任意のクラスまたはインスタンス属性やメソッドの本体で使用することはできません。

    コール:クラスのインスタンスオブジェクトとオブジェクトを呼び出すことができます。

 

ビスの方法は、(後述します)

  定義:ダブルダウンは特別な方法であり、彼はアンダースコアでクールなメソッド名であるとアンダースコア方式を冷却特別な意味を持っている__ __デュアル法の下で提供さメソッド名インタプリタは、ソースプログラマーPYTHON主に、

 我々は2アンダーの方法が、二重深さ研究方法の開発に可能な限り使用しないでください、私たちは、ソースコードを読むとより助長しています。

 コール:異なる方法の下で、二重が同じ臓器のように、異なるトリガモードを持っているが墓、無意識のうちにトリガーされたときにトリガ2アンダーの方法、例えば:__ init__

おすすめ

転載: www.cnblogs.com/Summer-skr--blog/p/11801369.html