A.クラスの組成
クラスは誰(オブジェクト): 何= '何 デフ__init __(自己、名前、年齢、性別): self.name =名前 self.age =年齢 self.gender =性別 デフ情報(自己): 印刷(self.name、self.age、self.gender) P1 =誰が( 'ジョン・ドウ'、18、 'M') p1.information()
1.1基本的なコンポーネント
- クラスは以下のように定義されます
- データ属性:定義された一部の__init __を()
- 機能属性(メソッド属性):上記DEF情報(自己)部分として
- P1 =誰( 'ジョン・ドウ'、18、 'M')の例
- 方法の例:p1.information()
- どのような場所を何という?
プロパティは、1辞書>クラス:プリント(誰.__ dicit__)
{ '__module__': '__main__'、 '何': '何'、'__init__':<機能.__ init__ 0x00000132B95692F0で> '情報':<0x00000132D04CAA60の機能Who.information> '__dict__':<属性"誰がオブジェクト> 『__weakref__「の「__dict__』:<属性『誰がオブジェクト>『__doc__』』の"__weakref__:なし}
クラス属性辞書から、それを見ることができます。データ属性および機能属性はメモリアドレスの本実施しています
属性の辞書の2>例:プリント(P1 .__ dict__に)
{ '名前': 'ジョン・ドウ'、 '年齢':18、 '性別': 'M'}
辞書内の属性の例には、それを見ることができる:特定のデータは、情報を格納されています
3渡される引数>の方法の例
)(p1.information:クラスメソッドの例は、関数を呼び出します
プロセス:データの例辞書{:「ジョン・ドウ」、「年齢」:「名前」18、「性別」:「M」}自己のクラスメソッド機能情報(自己)に渡され、そしてself.name、自己。年齢、self.gender値は、基本的に辞書を呼び出しています。
4>スコープ問題:[機能の範囲と一致]
印刷(Who.what)#what
プリント(p1.what)#what
それがインスタンス化されるかどうか、または変数は、対応する値を得ることができますどのようなクラスを呼び出します。データ属性のデータ属性クラス変数やインスタンスで見つけることができないものを同じに作用する機能として、それが床に移動します。
1.2 [クラスのデータの追加、削除、変更、]
Who.brother = 'ジャック' によるデータ[1.2.1]
{ '__module__': '__main__'、 '何': '何'、 '__init__':<.__機能0x000001DFC85C92F0でinit__> '情報': '__dict__' <0x000001DFDF54AA60での関数Who.information>:<属性"誰がオブジェクト> '__weakref__「の「__dict__':<属性「誰がオブジェクト> '__doc__'の__weakref__':なし、の弟': 'ジャック' }
我々は、増加よりもむしろ__init__その中で、「何同じ特性を=ものと理解することができる増大したデータの属性がわかり
次のコードで同じプロパティ:
クラスは誰(オブジェクト):
何= '何
弟=「ジャック」
デフ__init __(自己、名前、年齢、性別):
self.name =名前
self.age =年齢
self.gender =性別
デフ情報(自己):
印刷(self.name、self.age、self.gender)
{ '__module__': '__main__'、 '何': '何'、弟': 'ジャック'、 '__init__':<機能.__ 0x000001BAA07792F0でinit__> '情報':<0x000001BAB76AAA60での関数Who.information> '__doc__' < '誰がオブジェクトの属性'__weakref__'>::なし} '__dict__': '__weakref__'<'誰がオブジェクトの属性の__dict__ '>
1.2.2データ[40]:デルWho.brother
データ[1.2.3]変更:who.what = '変更'
1.2.4データ[検索]:プリント(Who.what)
1.3関数[追加、変更]
1.3.1機能クラスを増加させる方法:関数を定義し、追加
デフ姉(自己): プリント(self.nameは、「家族の唯一の子です」) Who.sister = 姉妹 プリント(誰。__dict__)
{ '__module__': '__main__' 、 'どのような': '変更'、 '__init__':<.__機能0x0000023683EE92F0でinit__> '情報': '__dict__' <0x000002369AE4AA60での関数Who.information>:<属性" ':<属性' ':なしには、誰がオブジェクト>' __doc__ 'の__weakref__誰がオブジェクト>' __weakref__ 'の' __dict__ ' SISTER「:<機能SISTER AT 0x0000023683B72EA0> }属性辞書クラスが追加されますメソッド関数の姉妹
最初の関数を定義し、次に変更:1.3.1メソッド関数は、クラスを変更します
デフ弟(自己): プリント(self.name、' 1人の弟持っている' ) Who.sister =弟の 印刷を(。__dict__
更改前:{ '__ module__': '__main__'、 '何': '変更'、 '__init__':<機能.__ 0x0000020BF10692F0でinit__> '情報':<0x0000020BFFFCAA60の機能Who.information> '__dict__':なし、: '__doc__' < '誰がオブジェクトの属性'__weakref__'>: '__weakref__'<'誰がオブジェクトの属性の__dict__ '> "妹:<0x0000020BEF1E2EA0での関数の姉妹> }
更改后:{ '__module__': '__main__'、 '何': '変更'、 '__init__':<.__機能0x0000020BF10692F0でinit__> '情報': '__dict__' <0x0000020BFFFCAA60での関数Who.information>:なし、: '__doc__' < '誰がオブジェクトの属性'__weakref__'>: '__weakref__'<'誰がオブジェクトの属性の__dict__ '> "妹:<0x0000020BFFFCAAE8での関数の兄> }
ここでは変更されませんキーのクラス属性辞書を見つけるが、キー(姉妹)対応する機能(アドレス)が変更されました。
1.4 [データ属性の例には、追加、削除、変更、【注意】、ノーがインスタンス化される欠損を変更して再検索機能]
[]でデータ属性の1.4.1例
p1.height = 173 プリント(P1。__dict__)
{ '名前': 'ジョン・ドウ'、 '年齢':18 '性別': 'M' を追加する前に}
増加後:{ '名前': 'ジョン・ドウ'、 '年齢':18、 '性別': ' M'、'高':173 }
注:これは、属性のみのインスタンス化辞書に追加して、属性辞書クラスが変更されていません
データの属性1.4.2実施例[40]:デルp1.height
データ属性変更の1.4.3例[]:デルp1.age = 21
データ検索[]の属性1.4.4例:プリント(デルp1.age)
要約:
注:属性クラス属性の関数とデータの属性は、ディクショナリに格納されたメモリアドレス
'__init__':<機能.__ 0x0000022E412A92F0でinit__> '情報':<0x0000022E581FAA60での関数Who.information>
それは、関連する、次のように特に注意を払う必要があります。