プログラムを見ていると、クラス(class)内の関数(def) の後に __init__ と書かれているプログラムを見かけます。「init」が「initial (初期、初回)」からきていることは何となくわかります。実際にどのように使うのかなど、まとめました。
クラス class
class クラス名:
def __init__(self, name):
self.name = name
def 関数名(self):
stdnt1 = クラス名(‘Arthur’ )
stdnt1.関数名()
ネットや本で理解できるまで何度も読み込むよりも、プログラムを書いて色々と試してみて、もう一度ネットや本に戻る方がよさそうです。
クラス (class) ってなに

関数(def) を使ってプログラムをまとめる、使いまわす方法について紹介しました。クラス(class) は複数の関数(def) をまとめることができます。値の受け渡しをするのに、初期化して再設定、クラス(class)内で流用することができたり、色々と便利になります。
学校の教室、●年●組の●組のデータを管理するのに便利、英会話などの習い事のクラス(階級)などをイメージすると良いかもしれません。
関数
クラス(class) 内で関連した複数の関数を設定することができます。実際にプログラムを書いてみて動作確認してみてください。
__init__ ってなに
クラス(class)内一番目の関数(def)に__init__を使うことで、引数の初期設定(初期パラメータの設定)を行えます。クラス(class)内に複数の関数(def)があるときに使ったり、子クラスを作ったりするとことで便利になります。
クラス(class) の中で使うのが一般的で、クラス(class) 外でも使用できますがあまり意味がありません。
self ってなに
色々細かい説明がありますが、クラス(class)内部にあるdefの引数に入れることで、クラス名を省略したりできます。selfでなくてもaだったりbだったり、どんな言葉でも構いませんが、selfを使うのが常識になっています。
更には、selfを使わずにプログラムを動かすこともできますが、使わない理由もありませんのでここでは省略します。
親子関係を持ったクラス(class)

クラス複数のクラスに親と子の関係を持たせると、親クラスで設定した引数を比較的簡単に流用できます。
動作確認
簡単にクラス(class) を使う
class Students_Data:
def __init__(self, name, gender, age, job):
self.name = name
self.gender = gender
self.age = age
self.job = job
def greeting(self):
print(f'{self.name}がご来店です。性別は{self.gender}です。')
def greeting2(self):
print(f'{self.name}がご来店です。年齢は{self.age}です。')
stdnt1 = Students_Data('Arthur', 'male', 37,'carpenter')
stdnt1.greeting()
stdnt1.greeting2()Arthurがご来店です。性別はmaleです。
Arthurがご来店です。年齢は37です。
と表示されます。
応用1(親子関係のクラス)
class Students_Data:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def Greeting(self):
print(f'{self.name}がご来店です。性別は{self.gender}、年齢は{self.age}です。')
class Students_Add1_Data(Students_Data ):
def __init__(self, name, gender, age, job, course):
super().__init__(name, gender, age)
self.job = job
self.course = course
def Other_Data(self):
print(f"{self.name}さんの詳細情報:\n 職業は{self.job}、利用クラスは{self.course}です。")
stdnt1 = Students_Add1_Data('Arthur', 'male', 37, 'carpenter', 'mid')
stdnt1.Greeting()
stdnt1.Age_Data()Arthurがご来店です。性別はmale、年齢は37です。
Arthurさんの詳細情報:
職業はcarpenter、利用クラスはmidです。
が表示されます。
親子関係を作れば、それぞれのデータのやり取りが簡単にできます。
応用2(辞書型のデータを利用)
今回は、打ち込みのためにデータを直接入力することで管理しましたが、実際にこのように利用するならデータ型を使うことになると思います。
std_no = {
1: ['Arthur', 'male', 37, 'carpenter', 'mid'],
2: ['Olivia', 'female', 20, 'student', 'high']
}
class Students_Data:
def __init__(self, name, gender, age):
self.name = name
self.gender = gender
self.age = age
def Greeting(self):
print(f'{self.name}がご来店です。性別は{self.gender}、年齢は{self.age}です。')
class Students_Add1_Data(Students_Data):
def __init__(self, name, gender, age, job, course):
super().__init__(name, gender, age)
self.job = job
self.course = course
def Other_Data(self):
print(f"詳細情報:職業は{self.job}、利用クラスは{self.course}です。")
num = 1
stdnt = Students_Add1_Data(*std_no[num])
stdnt.Greeting()
stdnt.Other_Data()Arthurがご来店です。性別はmale、年齢は37です。
Arthurさんの詳細情報:
職業はcarpenter、利用クラスはmidです。
が表示されます。
num = 2 とすると、
Oliviaがご来店です。性別はfemale、年齢は20です。
Oliviaさんの詳細情報:
職業はstudent、利用クラスはhighです。
が表示されます。
これでデータ管理できそうです。
クラス(class) を調べていると目にする用語説明
調べていると、耳馴染みのない用語に沢山遭遇します。今回のクラス(class) について調べていても、結構出てきます。敢えて避けてきましたが、知らないと「プログラマー」ぽくないのかなと思いましたので、念のためまとめました。
コンストラクタ
「init」というのは、最初にオブジェクトを作るときに呼び出される特殊な関数で「コンストラクタ(constructor)」と呼ばれます
インスタンス
インスタンスを日本語で表現すると「実体」です。クラスをもとに作られた具体的なオブジェクト(実体) のことを指します。クラスは設計図、インスタンスはその設計図をもとに作られた 個々のオブジェクト(引数)のことを言います。


コメント