Hi 大家好,
今天要開始介紹基礎語法中的物件導向篇之續集,那我們開始吧!
Q: 什麼是封裝?
A: 指的是將物件的資料(屬性)和行為(方法)包裝在一起,並通過控制訪問權限來保護資料。可以透過封裝,隱藏物件的內實作細節,僅開放部分的管道給使用者取用資料。
BankAccount
、定義了三個公開的方法存錢deposit
、取錢withdraw
、餘額查詢get_balance
設定私有屬性
:在下列舉例中,__account_holder
和 __balance
是私有屬性(以__
作為開頭),這表示它們只能在 BankAccount
類別的內部被訪問,外部無法直接訪問或修改這些屬性。這樣的設計可以保護資料的安全性,避免外部不當的操作。設定公開方法
:如 deposit
、withdraw
和 get_balance
這些方法都是公開的,可以從類別外部呼叫到它們。這些方法提供了開放管道的方式來操作和存取封裝內部的資料。class BankAccount:
def __init__(self, account_holder, balance=0):
# 私有屬性,只有在類別內部才能訪問
self.__account_holder = account_holder
self.__balance = balance
# 用於存錢
def deposit(self, amount):
if amount > 0:
self.__balance += amount
print(f"存款成功!您的新餘額是 {self.__balance} 元。")
else:
print("存款金額必須大於 0。")
# 用於取錢
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
print(f"取款成功!您的新餘額是 {self.__balance} 元。")
else:
print("餘額不足")
# 用於餘額查詢
def get_balance(self):
return self.__balance
可以使用以下存款
和提款
的操作來存取BankAccount
類別
# 建立一個 BankAccount 物件
account = BankAccount("John Doe", 1000)
# 存款
account.deposit(500)
# 提款
account.withdraw(200)
PS D:\Project\practice> python hi.py
存款成功!您的新餘額是 1500 元。
取款成功!您的新餘額是 1300 元。
PS D:\Project\practice>
查詢餘額
print(account.get_balance())
PS D:\Project\practice> python hi.py
1300
PS D:\Project\practice>
如果要存取私有屬性__balance
時,會發生錯誤
print(account.__balance)
PS D:\Project\practice> python hi.py
Traceback (most recent call last):
File "D:\Project\practice\hi.py", line 40, in <module>
print(account.__balance) # AttributeError: 'BankAccount' object has no attribute '__balance'
^^^^^^^^^^^^^^^^^
AttributeError: 'BankAccount' object has no attribute '__balance'. Did you mean: 'get_balance'?
PS D:\Project\practice>
那今天就介紹到這裡,我們明天見~