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の条件ブロックが実行される。

コメントを残す