Python面向对象编程与模块化设计练习
需求:
编写一个BankAccount类,模拟银行账户功能:
属性:账户名、余额
方法:存款、取款、查询余额
使用模块将类和测试代码分离。
模块文件:bank_account.py
该模块包含 BankAccount 类。
class BankAccount:
"""
模拟银行账户功能的类
"""
def __init__(self, account_name, balance=0):
"""
初始化账户名和余额
:param account_name: 账户名
:param balance: 初始余额,默认为0
"""
self.account_name = account_name
self.balance = balance
def deposit(self, amount):
"""
存款操作
:param amount: 存款金额
"""
if amount > 0:
self.balance += amount
print(f"成功存入 {amount} 元,当前余额为:{self.balance} 元。")
else:
print("存款金额必须大于 0!")
def withdraw(self, amount):
"""
取款操作
:param amount: 取款金额
"""
if amount > 0:
if amount <= self.balance:
self.balance -= amount
print(f"成功取出 {amount} 元,当前余额为:{self.balance} 元。")
else:
print("余额不足,取款失败!")
else:
print("取款金额必须大于 0!")
def check_balance(self):
"""
查询余额
:return: 当前余额
"""
print(f"账户 {self.account_name} 的当前余额为:{self.balance} 元。")
return self.balance
测试代码文件:test_bank_account.py
该文件包含测试代码,导入 bank_account 模块并对类进行操作。
from bank_account import BankAccount
def main():
# 创建账户
account = BankAccount("Lily", 1000)
# 查询余额
account.check_balance()
# 存款操作
account.deposit(500)
# 取款操作
account.withdraw(300)
# 尝试取款超过余额
account.withdraw(1500)
# 查询余额
account.check_balance()
if __name__ == "__main__":
main()
代码分析:
类与模块分离:
BankAccount 类定义在 bank_account.py 模块中,便于复用和维护。
测试代码在 test_bank_account.py 中,通过导入模块进行测试。
功能完整:
提供账户初始化、存款、取款、查询余额等功能。
包含输入校验(如金额不能为负,取款金额不得超过余额)。
模块化结构:
遵循模块化设计原则,方便代码扩展和多文件协作。
运行效果:
账户 Lily 的当前余额为:1000 元。
成功存入 500 元,当前余额为:1500 元。
成功取出 300 元,当前余额为:1200 元。
余额不足,取款失败!
账户 Lily 的当前余额为:1200 元。