クラスオブジェクト

クラスはオブジェクト

Pythonでは関数もオブジェクトとして扱えますが、クラスでさえもオブジェクトの一種として扱えます。クラスをオブジェクトとして扱う場合はクラスオブジェクトや型オブジェクトと記述することにします。それではクラスをオブジェクトとして変数に代入する例を確認してみましょう。

class Coordinate:
    """ 座標クラス """

    def __init__(self):
        """ 初期化 """
        self.x = 0
        self.y = 0

    def show_coordinate(self):
        """ 座標を表示する """
        print(self.x, self.y)


# クラスを普通にインスタンス化する
cood = Coordinate()  # 普通にインスタンスを生成する
cood.x = 100  # メンバxに代入
cood.y = 200  # メンバxに代入
cood.show_coordinate()  # メソッドを利用する

# クラスをオブジェクトとして扱う
C = Coordinate  # Coordinateクラスのオブジェクトとして変数Cに代入する
cood2 = C()  # Cからクラスを生成する
cood2.x = 300
cood2.y = 600
cood2.show_coordinate()


上のコードでは、平面座標の1点を表すクラス、Coordinateを独自に定義しています。15行目から19行目まではこれまでどおり、普通にクラスからオブジェクトを生成しています。一方、21行目から25行目ではクラスを一旦変数Cに代入し、Cからオブジェクトを生成しています。このようにクラスをオブジェクトを別の変数に代入してからインスタンス化することが可能です。もちろん引数にしたり戻り値にすることも可能です。