【场景】假设你是一家银行的开发人员,要求为帐户的类型定义对象,这些帐户是:活期帐户(Checking accout)储蓄存款帐户(Savings account)活期帐户具有以下特征帐户持有者的名字只能在创建帐户时指定初始余额(opening balance)必须在帐户创建时指定帐户创建时必须分配账户id号。活期帐户的账户id号范围是从100000到499999,每个活期帐户必须具有唯一的帐户id号。本实验不要求检查帐户号的上限。活期帐户持有者能够:定购支票簿检查帐户余额往帐户中加钱如果活期帐户里的资金充足,可以从中取钱储蓄存款帐户具有以下特征帐户持有者的名字只能在创建帐户时指定初始余额必须在帐户创建时指定储蓄存款帐户的账户id号范围是从500000到999999。本实验不要求检查帐户号的上限。帐户可以赚取利息。利息取决于帐户余额,如果余额大于1000,利息率是6%,否则是3%。储蓄存款帐户持有者能够:检查帐户余额往帐户中加钱如果活期帐户里的资金充足,可以从中取钱
时间: 2024-02-21 09:58:44 浏览: 235
好的,这是一个银行帐户类型的对象定义,其中包括两种类型的帐户:活期帐户和储蓄存款帐户。下面是一个可能的实现:
```python
import random
class BankAccount:
def __init__(self, holder_name, opening_balance):
self.holder_name = holder_name
self.balance = opening_balance
self.account_id = self.generate_account_id()
def generate_account_id(self):
return random.randint(100000, 999999)
def check_balance(self):
return self.balance
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
if self.balance >= amount:
self.balance -= amount
else:
print("Insufficient funds")
class CheckingAccount(BankAccount):
def __init__(self, holder_name, opening_balance):
super().__init__(holder_name, opening_balance)
def generate_account_id(self):
return random.randint(100000, 499999)
def order_checks(self):
print("Order checks")
class SavingsAccount(BankAccount):
def __init__(self, holder_name, opening_balance):
super().__init__(holder_name, opening_balance)
def calculate_interest(self):
if self.balance > 1000:
return self.balance * 0.06
else:
return self.balance * 0.03
def deposit_interest(self):
interest = self.calculate_interest()
self.deposit(interest)
```
在上面的实现中,我们定义了一个 BankAccount 类,包括了所有帐户类型的公共属性和方法,如帐户持有者名称,余额,帐户 ID 等等。我们还定义了一个 `generate_account_id` 方法,用于生成随机帐户 ID。`check_balance`、`deposit`、`withdraw` 方法分别用于检查余额、存款和取款。
在 CheckingAccount 类中,我们重写了 `generate_account_id` 方法,以便生成符合活期帐户 ID 范围的随机帐户 ID。我们还添加了一个 `order_checks` 方法,用于定购支票簿。
在 SavingsAccount 类中,我们定义了一个 `calculate_interest` 方法,用于计算利息,根据当前余额的不同,计算利息的利率也不同。我们还添加了一个 `deposit_interest` 方法,用于将计算的利息存入帐户余额中。
这样,我们就可以创建并操作不同类型的银行帐户对象了,例如:
```python
# 创建活期帐户对象
checking_account = CheckingAccount("John Smith", 1000)
print(checking_account.account_id) # 输出:一个在 100000 到 499999 范围内的随机数
checking_account.order_checks() # 输出:Order checks
checking_account.deposit(500)
print(checking_account.check_balance()) # 输出:1500
checking_account.withdraw(1000)
print(checking_account.check_balance()) # 输出:500
# 创建储蓄存款帐户对象
savings_account = SavingsAccount("Jane Doe", 2000)
print(savings_account.account_id) # 输出:一个在 500000 到 999999 范围内的随机数
print(savings_account.calculate_interest()) # 输出:120.0
savings_account.deposit_interest()
print(savings_account.check_balance()) # 输出:2120.0
```
阅读全文