オブジェクト指向
まず、特別な修飾子
総メンバー:
プライベートメンバー:__メンバー名(民営化:プラスメンバー名の前に2つのアンダースコア)。
実際にクラス名としてパッケージ__ _メンバー名
- 直接外部アクセスすることはできません
-サブクラスは、直接の親クラスのprivateメンバにアクセスすることはできません 1 クラスFを:
2 DEF __init__ (自己): 3 self.ge = 123 4 自己。__gene = 123の 5つの 6 classsのS(F): 7 デフ __init__ (自己、名): 8 self.name = 名前 9 自己.__年齢= 18 10 スーパー(S、自己)。__init__ () 11 デフショー(自己): 12 プリント(self.name) 13 プリント(自己。__age ) 14 プリント(self.ge) 15 プリント(自己。__gene ) 16 17 S = Sで(' zhangsan ' ) 18 s.show()
特別の第二に、メンバー
__init __:OBJ =クラスのオブジェクトを作成するためのクラス名()、およびデフォルトの実行__init __()メソッド。
__del__:代わりデストラクタ、およびオブジェクトが破棄されるときに呼び出されるコンストラクタ。
__call__:オブジェクト名+()実行のデフォルトの方法。
1 クラスはFoo: 2 DEF __init__ (自己): 3 プリント(' のinit ' ) 4 5 DEF __call__(DELF、*引数、** kwargsから): 6 プリント(' コール' ) 7 8はFoo()()
__int __:INT(オブジェクト)は、自動的に__int __()メソッドを実行します。
__str __:STR(オブジェクト)は、自動的に__str __()メソッドを実行します。
1 クラス はFoo: 2 DEF __init__ (自己): 3つの パス 4 5 DEF __int__ (自己): 6 復帰 1111年 7 8 DEF __str__ (自己): 9 リターン ' ASDF ' 10 11 OBJ = フー() 12 プリント(OBJ、INT (OBJ)、STR(OBJ))
__dict__:すべての辞書によってカプセル化されたコンテンツオブジェクトを返さ。
三、メタクラス、クラス父親
、Pythonのすべてが内のオブジェクトであります
B、クラスFooの:
パス
OBJ =フー()
OBJは、物体はFooのインスタンスであり; fooはクラスオブジェクトの一種であります
1 クラス はFoo(オブジェクト): 2 DEF FUNC(自己): 3 プリント(123 ) 4つの。対応================== 5。 DEFの 機能(自己): 6 プリント( 123 ) 7。 8。フー=タイプ(' フー'、(オブジェクト)、{ [ FUNC ' :関数}) 9。クラスのオブジェクトを宣言し、クラスオブジェクト名:fooが、(オブジェクト)を継承し、クラスオブジェクトは、FUNCと呼ばれるメソッドを有します
1 クラス がMyType(タイプ): 2 DEF __init__(自己、*引数、** kwargsから): 3 #1 自己=フー 4 プリント(' がMyTypeのINIT ' ) 5 超(MYTYPE、自己)。__init (何を、塩基、辞書) 6 7 デフ __call__(自己、* argsを、** kwargsから): 8 #の自己=はFoo 9 プリント(' がMyTypeコール' ) 10 OBJ =自己。__new__(SELT、* argsを、** kwargsから) 11 自己。__init__ (OBJ) 12 13 クラス はFoo(オブジェクト、メタクラス= がMyType): 14 デフ __init__ (自己) 15 プリント(' フー・INIT ' ) 16 17 DEF __new__(CLS、*引数、** kwargsから): 18 #1 CLS =フー 19 プリント(' fooは__new__ ' ) 20 リターン オブジェクト。__new__(CLS、*引数、** kwargsから) 21 22 COJ = フー() 23 24 出力: 25 INITがMyType 26である がMyTypeコール 27 はFoo である__new__ 28 はFoo INIT 29 30 第一段階:作成底インタプリタクラスfooへの上からのコードの実行、最初のコールがMyType __ __init(); 31である 第二相:フークラスはオブジェクトobjを作成し; 32 。1 、fooが最初)(__callの__内がMyTypeを呼び出すがMyTypeオブジェクトので、フー()であり、 33は、 2 Fooクラスによってオブジェクトobjを作成し、:ターンコール 34は __callの__のがMyType():オブジェクト+ ()メソッドが自動的に呼び出される 35 fooがオブジェクト作成:フー__new __()の 36 のFooの__init __():フー・オブジェクトがインスタンス化
C、オブジェクト・クラスのオブジェクト・タイプは、タイプ(...)は、オブジェクトインスタンスオブジェクトはクラスオブジェクトであります