Tell me, Watson

自己満ライフログの垂れ流し

初見でわかる!! Python3のクラス(class)について

クラスとは何か

クラスとは定義した関数を実行するにあたり、クラス定義されたオブジェクトからしか関数を実行させない様にするものです。

何を言ってるんだ?と思うと思うので、以下にサンプルを記載致します。

例文で確認

この例文では、「Man」と言うクラスを定義し、

「go_to_man_only」と言う関数を定義し、実行された場合は「go to man only」と返す関数と

もう一つ「Woman」と言うクラスを定義し、

「go_to_woman_only」と言う関数を定義し、実行された場合は「go to woman only」と返す関数を作成しました。

記載方法は「class+クラス名+(object)+:」(この「object」という文字は無くても問題無いが旧verのPythonの名残のため記載しておいたほうが認識しやすい)

改行してスペースを4つ空け「def+関数名+(self)+:」

改行してスペースを8つ空け「実行したい関数を入力」となります。

class Man(object):
    def go_to_man_only(self):
        print('go to man only')

class Woman(object):
    def go_to_woman_only(self):
        print('go to woman only')

これを実行するために

まずオブジェクトにクラスを紐付けします。

今回は「man」と言うオブジェクトに「Man()」のクラスを紐付けします。

同様に「woman」と言うオブジェクトに「Woman()」のクラスを紐付けします。

記載方法は以下となります。

man=Man()
woman=Woman()

これで「man」によって「Man()」クラスで定義した関数を実行することができます。 (「man」で「go_to_man_only」を実行することが可能。)

実行する場合は「オブジェクト+. +関数名+()」で実行が可能となります。

今回の場合は以下の様に記載します。

man.go_to_man_only()
woman.go_to_woman_only()

これで「go to man only」と「go to woman only」が返ってきます。

クラスの異なるオブジェクトで実行しようとした場合

「man」で「Woman()」クラスで定義した関数を実行しようとした場合は以下の表記になります。

man.go_to_woman_only()

これを実行した場合は以下の様に属性エラーが出るため、「go_to_woman_only」は実行出来ません。

「 woman.go_to_man_only()

AttributeError: 'Woman' object has no attribute 'go_to_woman_only'」

くれぐれもトイレを間違えて入らない様にしてください。

本日のプログラム全文

class Man(object):
    def go_to_man_only(self):
        print('go to man only')

class Woman(object):
    def go_to_woman_only(self):
        print('go to woman only')

man=Man()
woman=Woman()

man.go_to_man_only()
woman.go_to_woman_only()