【Python】クラス(class) とクラス内の関数(def) __init__等々について

プロモーションが含まれています。

スポンサーリンク
サムネイル プログラム

プログラムを見ていると、クラス(class)内の関数(def) の後に __init__ と書かれているプログラムを見かけます。「init」が「initial (初期、初回)」からきていることは何となくわかります。実際にどのように使うのかなど、まとめました。

スポンサーリンク

クラス class

class クラス名:
def __init__(self, name):
self.name = name

def
関数名(self):

stdnt1 =
クラス名(‘Arthur’ )
stdnt1.
関数名()

ネットや本で理解できるまで何度も読み込むよりも、プログラムを書いて色々と試してみて、もう一度ネットや本に戻る方がよさそうです。

クラス (class) ってなに

クラスのイメージ1

関数(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)」と呼ばれます

インスタンス

インスタンスを日本語で表現すると「実体」です。クラスをもとに作られた具体的なオブジェクト(実体) のことを指します。クラスは設計図、インスタンスはその設計図をもとに作られた 個々のオブジェクト(引数)のことを言います。

コメント

タイトルとURLをコピーしました