《父與子的程式設計之旅(第3版)》第14章習題答案

謝婷婷發表於2020-08-27

本文針對第14章章末的習題提供參考答案。當然,有些習題的正確答案不止一個,特別是“動手試一試”,不過你可以通過這些答案來判斷自己的思路是否正確。

第14章 物件

測試題

(1) 可以使用class關鍵字定義新的物件型別。

(2) 屬性是你所知道的關於某個物件的資訊,就是包含在物件中的變數。

(3) 方法是物件可以實現的操作,就是包含在物件中的函式。

(4) 類只是物件的定義或藍圖,根據這個藍圖建立出物件時得到的就是例項。

(5) 在物件方法中,通常用self表示例項引用。

(6) 多型是指不同物件可以包含同名的兩個或多個方法。這些方法可以根據它們所屬的物件有不同的表現。

(7) 繼承是指物件能夠與它們的上層物件共享一些屬性和方法。子類(派生類)會得到父類的所有屬性和方法,還可以包含父類所沒有的屬性和方法。

動手試一試

(1) BankAccount類的定義如下所示:

class BankAccount:
    def __init__(self, acct_number, acct_name):
        self.acct_number = acct_number
        self.acct_name = acct_name
        self.balance = 0.0
    def displayBalance(self):
        print("The account balance is:", self.balance)
    def deposit(self, amount):
        self.balance = self.balance + amount
        print("You deposited", amount)
        print("The new balance is:", self.balance)
    def withdraw(self, amount):
        if self.balance >= amount:
            self.balance = self.balance - amount
            print("You withdrew", amount)
            print("The new balance is:", self.balance)
        else:
            print("You tried to withdraw", amount)
            print("The account balance is:", self.balance)
            print("Withdrawal denied. Not enough funds.")

利用以下程式碼測試這個類,確保它能正常工作。

myAccount = BankAccount(234567, "Warren Sande")
print("Account name:", myAccount.acct_name)
print("Account number:", myAccount.acct_number)
myAccount.displayBalance()
myAccount.deposit(34.52)
myAccount.withdraw(12.25)
myAccount.withdraw(30.18)

(2) 要建立InterestAccount類,可以定義BankAccount的子類,並建立一個方法來增加利息:

class InterestAccount(BankAccount):
    def __init__(self, acct_number, acct_name, rate):
        BankAccount.__init__(self, acct_number, acct_name)
        self.rate = rate
    def addInterest(self):
        interest = self.balance * self.rate
        print("adding interest to the account,", self.rate * 100, "percent")
        self.deposit (interest)

下面是一些測試程式碼。

myAccount = InterestAccount(234567, "Warren Sande", 0.11)
print("Account name:", myAccount.acct_name)
print("Account number:", myAccount.acct_number)
myAccount.displayBalance()
myAccount.deposit(34.52)
myAccount.addInterest()

相關文章