クラス【クラス】とメソッド【メソッド】

クラス【class】

データやデータの処理をまとめたもの。
雛形のようなもの。

class <<クラス名>>:
    pass
 
<<インスタンス引数名>> = <<クラス名>>()

メソッド【def】

処理の1つのまとまり。

class <<クラス名>>:
    def <<メソッド名>>(self):
        # メソッドの定義
 
# 呼び出し
<<クラス名>>().<<メソッド名>>

コンストラクタ【init】

クラスのインスタンスに生成時に自動的に呼び出されるメソッド。
クラスの初期化をまとめられるため、可読性・保守性が向上する。

デストラクタ【del】

クラスのインスタンスが破棄される時に自動的に呼び出されるメソッド。
使用頻度は低い?

使い方

class User: # 親クラス
    def __init__(self, name=None, age=0):
        self.name = name
        self.age = age
 
    def output(self):
        if self.name == None:
            return '名前が未設定です。'
        elif self.age == 0:
            return '年齢が未設定です。'
        else:
            user_data = '名前:' + self.name + ' 年齢:' + str(self.age)
            return user_data
 
class AddProfile(User): # 子クラス(Userクラス 継承)
    def __init__(self, name, age, sex=0): # sex引数 追加
        super().__init__(name, age) # 基底クラスのメソッド 呼び出し
 
        if sex == 1:
            self.sex = '男'
        elif sex ==2:
            self.sex = '女'
        else:
            self.sex = '未設定'
 
    def output(self): # メソッドのオーバーライド
        user_data = super().output()
        user_data += ' 性別:' + self.sex
        return user_data
 
user1 = User()
print(user1.output())
# 名前が未設定です。
 
user2 = User('Tanaka')
print(user2.output())
# 年齢が未設定です。
 
user3_1 = User('Tanaka', 25)
print(user3_1.output())
# 名前:Tanaka 年齢:25
 
user3_2 = User()
user3_2.name = 'Tanaka'
user3_2.age = 25
print(user3_2.output())
# 名前:Tanaka 年齢:25
 
user4 = AddProfile('Tanaka', 25)
print(user4.output())
# 名前:Tanaka 年齢:25 性別:未設定
 
user5 = AddProfile('Tanaka', 25, 1)
print(user5.output())
# 名前:Tanaka 年齢:25 性別:男