クラスとは
Pythonのクラスは、データと機能を組み合わせる方法を提供します。
クラスは設計図のようなもので、その設計図に沿って定義されるものがインスタンスと呼ばれます。
例えば、動物というクラスがあったとします。
動物というクラスは心臓の数、腕の数、足の数をデータとして持ち、
また、仲間どうしでどのようにコミュニケーションするための機能を持ちます。
人間は動物の一種です。動物というクラスに含まれるので、人間はインスタンスになります。
基本的に心臓は1つ、腕は2本、足を2本持ちます。
仲間どうしでは会話によってコミュニケーションを行います。
このように、データと機能(もしくは振る舞い)をクラスで設定した後で、
その一例・実例となるものをインスタンスで設定します。
インスタンスで設定するときに、その情報を決めることができます。
動物は他にも犬、猫、タヌキ、狐と様々な種類があるので、動物と言うクラスを元にそれぞれインスタンスとして設定することができます。
また、心臓や足や腕の本数は動物によって異なりますし、コミュニケーションの方法も異なるかもしれないので、それぞれ設定することができます。
動物が持つ身体的な情報は他にもたくさんありますし、それぞれの動物がもつ機能・ふるまいも他にたくさんあります。
そんな時は、後から動物というクラスに情報や機能・ふるまいを追加することができます。
例えば、動物が持つ情報として目や耳に関する内容を追加しても良いですし、
食べ物をどのように得るかという機能・ふるまいを追加することもできます。
※犬や猫なら狩り、人間はそれに加えて農耕をするといったことなど。
それぞれの動物が生態系の中でどのような役割を果たしながら生きているかをシミュレートするプログラムを作りたいときには、こうした動物自身の情報と、それぞれの動物の捕食対象・天敵と言った動物どうしの関係性も大切になるかもしれません。
会社には複数の部署があってそれぞれが関係しあいながら運営されているように、
アプリケーションにも複数の概念や情報がそれぞれ関係しあいながら動作することになります。
アプリケーション内の概念や情報はオブジェクトと呼ばれます。
今回の例で言えば、動物がオブジェクトに当たります。
ちょっとした業務の効率化をする上ではクラスを使わなくてもプログラムを組むことができます。
また、クラスは絶対使わなければならないというものでもありません。
Pythonを使っていく中で、規模が大きいプログラムを組むようになった時などに必要に応じて学習すれば良いと思います。
クラスの定義でできること
変数
クラス変数
インスタンス変数
メソッド
クラスの使い方
クラスの使い方について整理します。
Animalというクラスを用意し、人間をインスタンスとして作ります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class Animal(): #クラス変数。全ての動物(インスタンス)で共通。 number_of_animal = 0 #コンストラクタ。動物(インスタンス)ごとに初期設定できる。 #プログラム上で動物を定義する(インスタンスを作成)する時に引数として必ず渡す。 def __init__(self, heart, arms, legs): self.heart = heart #心臓 self.arms = arms #腕 self.legs = legs #足 #メソッド #仲間とどのようにコミュニケーションをとるか def communicate(self, way_to_communication): self.how_to_communicate = way_to_communication print("コミュニケーションの方法:",self.how_to_communicate) #人間は動物の一種なので、クラスAnimalを変数humanでインスタンス化 #心臓は1つ、腕は2本、足は2本 human = Animal(heart=1, arms=2, legs=2) #Animalクラスを使って定義された動物の種類数が1つ増えたので、 #クラス変数number_of_animalを1増やす Animal.number_of_animal += 1 print("Animal.number_of_animal:", Animal.number_of_animal) print("human.number_of_animal:", human.number_of_animal) #仲間とどのようにコミュニケーションをとるかを決める #communicateメソッドを呼び出し、会話でコミュニケーションすることを引数として伝える。 human.communicate(way_to_communication = "会話") |
参考
コメント