Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ プライベート属性の定義 | カプセル化
Pythonにおけるオブジェクト指向プログラミング

bookプライベート属性の定義

メニューを表示するにはスワイプしてください

プライベート属性は、Pythonのカプセル化モデルにおける最も強力なデータ保護レベル。ダブルアンダースコアを使用することで、Pythonの名前マングリング機構が有効になり、機密性の高い属性がほぼアクセス不可能な識別子へと変換される。これにより、偶発的な干渉からの強固な保護が提供され、安全でプロフェッショナルなクラス設計の実現に寄与する。

123456789101112131415161718192021
class BankAccount: def __init__(self, owner, balance): self.owner = owner # Public attribute self.__balance = balance # Private attribute def deposit(self, amount): if amount > 0: self.__balance += amount print(f"Deposited {amount}. New balance: {self.__balance}") else: print("Deposit amount must be positive.") def withdraw(self, amount): if 0 < amount <= self.__balance: self.__balance -= amount print(f"Withdrew {amount}. New balance: {self.__balance}") else: print("Invalid withdrawal amount.") def get_balance(self): return self.__balance
copy
Note
注意

プライベート属性は技術的にはマングリングされた名前を通じてアクセス可能だが、この方法はカプセル化の原則に反し、本番コードでは決して使用すべきではない。

__balanceBankAccount のようなプライベート属性は、名前マングリングによって自動的に _BankAccount__balance にリネームされます。これにより直接アクセスが難しくなり、外部からの利用が抑制されます。

プライベート属性は、機密状態 を保護し、検証済みの公開メソッド を通じた操作のみを許可します。WalletBankAccount のようなクラスでは、残高、PIN、取引履歴などのデータがプライベートに保たれ、deposit()withdraw()authenticate() などのメソッドがルールを強制し、セキュリティを維持します。

question mark

Python におけるプライベート属性の主な目的は何ですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  2

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  2
some-alt