インスタンスオブジェクトはひとつのクラスから複数作ることができる。
ひとつのクラスのコードを基に、クラスオブジェクトとインスタンスオブジェクトの2種類のオブジェクトが生成される。クラスオブジェクトはインスタンスオブジェクトのいわば「工場」の役割を果たす。
クラスのコードからまず作られるのはクラスオブジェクトで、そのクラスオブジェクトからインスタンスオブジェクトが作成される。
インスタンスオブジェクトを生成するためにはクラスオブジェクトの「呼び出し」操作を行う。
「呼び出し」操作を行うたびに新たなインスタンスオブジェクトが作成される。
クラスオブジェクト
1) classステートメントが実行され、クラスオブジェクトが生成される。生成結果はクラス名に代入される。
2) classステートメントの内側で値の代入が行われた変数はクラスの属性になる。
3) ステート情報を保持する変数もメソッドもクラスの属性になる。
インスタンスオブジェクト
1)クラスオブジェクトを関数のように「呼び出す」とインスタンスオブジェクトが作成される。
>>> class C1:
... X = 10
... def aaa(self, x):
... print x, self.X
...
>>> a = C1() # クラスオブジェクト「呼び出し」。aにはインスタンスオブジェクトが代入される。
2)インスタンスオブジェクトはクラス属性全てを継承し、独立した名前空間になる。
3)メソッドの第一引数selfを利用すればインスタンス属性を作成することができる。
>>> class C1:
... def __init__(self,x):
... self.X = x #インスタンス属性X
...
>>> a = C1(10)
>>> b = C1(20)
>>> c = C1(30)
>>> a.X # インスタンス属性にアクセス
10
>>> b.X # インスタンス属性にアクセス
20
>>> c.X # インスタンス属性にアクセス
30
>>>
おしまい。
.
0 コメント:
コメントを投稿