2025.09.13(更新日: 2025.09.13)
      カプセル化の実例
はじめに
銀行口座のカプセル化の実例を見ていこう。
class BankAccount:
    def __init__(self, owner, balance=0):
        self.owner = owner
        self.__balance = balance  # __(アンダースコア2つ)で「非公開属性」にする
    # 残高を取得するメソッド(ゲッター)
    def get_balance(self):
        return self.__balance
    # 入金メソッド
    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount
            print(f"{amount}円を入金しました。")
        else:
            print("入金額は正の数である必要があります。")
    # 出金メソッド
    def withdraw(self, amount):
        if 0 < amount <= self.__balance:
            self.__balance -= amount
            print(f"{amount}円を出金しました。")
        else:
            print("残高不足、または金額が不正です。")
# 利用例
account = BankAccount("Hiroki", 1000)
print(account.get_balance())  # 1000
account.deposit(500)          # 500円を入金しました。
print(account.get_balance())  # 1500
account.withdraw(2000)        # 残高不足、または金額が不正です。accountインスタンス生成
Hirokiと1000を渡す。

コンストラクタで初期値の登録が行われる。

accountインスタンスの中身。ownerとカプセル化されたbalanceに情報が入っている。

get_balance関数で残高照会


出力結果

deposit関数で入金


デバッグコンソールで以下のように入金後の残高にアクセスしたが、カプセル化しているので、この方法は望ましくない。

以下のように、get_balance関数で残高にアクセスするのが正解。

withdraw関数で引き出し


amount = 2000は、self.__balance = 1500より大きいので、elseの条件ブロックが実行される。

コメントを残す