Irohabook
0
360

クラスとオブジェクトの基本|Python

クラスとは要素や関数が集まったものです。この意味でクラスはリストに近いといえるでしょう。例えばユーザー名とパスワードを持ったアカウントというクラスを考えます。

class Account:
    username = '太郎'
    password = 'abc'


a = Account()
print(a.username)
print(a.password)

出力:

太郎
abc

クラスはclassという特殊な言葉で宣言します。クラスの中身はusernameとpasswordというデータです。usernameに太郎、passwordにabcという値を入れていますが、これはあくまでも初期値と考えてください。

オブジェクト

クラスはデータの形を決めるもので、データそのものは持ちません。クラスのデータをオブジェクトといいます。

クラス…データの形
オブジェクト…データ

上のプログラムではaがオブジェクトに当たります。つまりaが実際のデータです。aという人はusernameとpasswordを持ち、それぞれa.usernameとa.passwordで取得します。

データを出し入れする関数をつくる

class Account:
    username = '太郎'
    password = 'abc'

    def set_username(self, username):
        self.username = username

    def set_password(self, password):
        self.password = password


a = Account()
a.set_username('花子')
a.set_password('xyz')
print(a.username)
print(a.password)

出力:

花子
xyz

クラスの中に関数が二つ入っています。set_usernameは文字どおりusernameに値を代入する関数です。set_passwordも同様です。

クラスがデータを持たない理由は上のコードから明らかになります。実際のデータを持つオブジェクトはaで、初期値は太郎、abcです。

しかしa.set_username('花子')でaのusernameを花子にしています。aのデータが変わりました。さらにa.set_password('xyz')でaのpasswordもxyzになります。こうしてオブジェクトは花子、xyzというデータを持ちました。

クラスを勉強するポイント

クラスとオブジェクトは自転車や鉄棒の逆上がりと同じで、一度わかってしまうと簡単ですが、それまでがなかなか大変です。

難しい本を読むことも大切ですが、まずは自分でいろいろなプログラムを作ることをおすすめします。オブジェクトという概念は、経験を重ねていくことで自然に理解できるものです。

くりかえしになりますが

クラス…データの形
オブジェクト…データそのもの

です。まずはここをおさえてください。冒頭でクラスはリストと同じようなものだ、といいましたが、正確にはオブジェクトです。オブジェクトはリストのようなデータのかたまりです。ただしオブジェクトは自分自身を操作するための関数も持っています。

よく考えるとリストもドット記号をつけて自分自身の中身を変えることができましたね。aというリストを降順にするときは

a.sort()

としました。このsortは、上のset_usernameと同じように自分自身を変える関数です。Pythonのオブジェクトは、自分の持っているデータや関数にアクセスするためにドットを入れます。

次の記事

クラスとオブジェクト