クラスを定義する

>>> class Point:                   # クラス定義の開始
...     format = "%s [X:%s Y:%s]"  # クラス変数
...
...     def __init__(self, x, y):  # メソッドの定義
...         self.str = "Point"     # インスタンス変数
...         self.set(x, y)
...
...     def set(self, x, y):
...         self.__x = int(x)      # プライベートな属性
...         self.__y = int(y)
...
...     def show(self):
...         print Point.format % (self.str, self.__x, self.__y)
... # クラス定義の終了(ここでクラスオブジェクトが生成される)
>>>
>>> p1 = Point(2, 6)  # インスタンスの生成(クラスオブジェクトの呼び出し)
>>> p2 = Point(1,9)
>>>
>>> p1.show()         # メソッドの呼び出し
Point [x=2 y=6]
>>> p2.show()
Point [x=1 y=9]
>>>
>>> p1.str = "座標"   # インスタンス変数へ代入
>>> p1.show()
座標 [x=2 y=6]
>>> p2.show()         # 別のインスタンスには影響なし
Point [x=1 y=9]
>>>
>>> Point.format = "%s [x=%s y=%s]" # クラス変数へ代入
>>> p1.show()         # 全てのインスタンスに影響あり
座標 [x=2 y=6]
>>> p2.show()
Point [x=1 y=9]
>>>
>>> p1._Point__x      # プライベートな属性の参照
2
  • クラス定義の開始はclass クラス名:
  • クラス内で関数を定義すると、メソッドになる
  • メソッドの第一引数は、self(そのメソッドのインスタンス
  • メソッドを呼び出す際には、インスタンスを渡す必要はない
  • __init__( )はインスタンス生成直後に呼び出される
  • インスタンスの属性(データまたはメソッド)はインスタンス名.属性名で参照する
    • メソッド内から参照する場合は、self.属性名
  • クラス変数とはクラスオブジェクトの属性、クラス名.属性名で参照する
  • インスタンスの属性をプライベートにするには、名前を__で始まり__で終わらないものにする
    • プライベートな属性は、インスタンス名.__クラス名_属性名で参照する