用python3设计一个管理银行账户的类,要求有两个类属性:开户数量以及总存款额;两个实例属性:户名与个人存款额;两个普通的实例方法:取钱与存钱;四个类方法:总存款额增减以及开户量增减,还要实现特殊方法_ str _。最后,生成两个实例并作简单的测试!
时间: 2024-02-23 20:56:49 浏览: 106
好的,以下是实现要求的银行账户类的代码:
```python
class BankAccount:
num_of_accounts = 0 # 类属性:开户数量
total_deposits = 0 # 类属性:总存款额
def __init__(self, account_holder, initial_deposit):
self.account_holder = account_holder # 实例属性:户名
self.balance = initial_deposit # 实例属性:个人存款额
BankAccount.num_of_accounts += 1
BankAccount.total_deposits += initial_deposit
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
if self.balance < amount:
print("余额不足,取款失败")
else:
self.balance -= amount
@classmethod
def increase_total_deposits(cls, amount):
cls.total_deposits += amount
@classmethod
def decrease_total_deposits(cls, amount):
cls.total_deposits -= amount
@classmethod
def increase_num_of_accounts(cls):
cls.num_of_accounts += 1
@classmethod
def decrease_num_of_accounts(cls):
cls.num_of_accounts -= 1
def __str__(self):
return f"户名:{self.account_holder},余额:{self.balance}"
# 测试代码
account1 = BankAccount("张三", 1000)
account2 = BankAccount("李四", 2000)
print(BankAccount.num_of_accounts) # 2
print(BankAccount.total_deposits) # 3000
account1.deposit(500)
account1.withdraw(200)
print(account1) # 户名:张三,余额:1300
BankAccount.increase_total_deposits(1000)
BankAccount.decrease_num_of_accounts()
print(BankAccount.total_deposits) # 4000
print(BankAccount.num_of_accounts) # 1
```
以上代码中,我们定义了一个 `BankAccount` 类,包含了要求中的所有属性和方法。
在初始化方法 `__init__` 中,我们传入两个参数:户名和初始存款额,用它们来初始化实例属性 `account_holder` 和 `balance`。此外,我们还通过类属性 `num_of_accounts` 和 `total_deposits` 记录了所有账户的数量和总存款额。
在 `deposit` 和 `withdraw` 方法中,我们分别实现了存款和取款的操作。注意,在取款时,我们需要检查余额是否充足,如果不足则提示错误信息。
在类方法中,我们实现了增加和减少总存款额以及增加和减少开户数量的操作。
最后,在特殊方法 `__str__` 中,我们返回了一个字符串,用于描述账户的信息。
在测试代码中,我们生成了两个实例 `account1` 和 `account2`,并对它们进行了一些操作,最后输出了一些统计信息。
阅读全文