我的目標:覆寫process_sale方法,以便將每次銷售的 2% 添加到獎勵中。
我的問題:我如何在輸出中得到 0?
練習 5:
使用左側的父類來幫助您解決此問題。第一個父類是具有一些非常通用的資訊的Person類。第二個類CardHolder是信用卡持有人的類。創建子類PlantinumClient。這個類繼承了兩個父類的所有屬性。此外,子類具有屬性cash_back和獎勵。cash_back應設定為0.02和獎勵應設定為0的覆寫process_sale方法使得每個銷售的2%被添加到獎勵。
class Person:
def __init__(self, name, address):
self.name = name
self.address = address
def get_info(self):
return f"{self.name} lives at {self.address}."
class CardHolder:
def __init__(self, account_number):
self.account_number = account_number
self.balance = 0
self.credit_limit = 5000
def process_sale(self, price):
self.balance = price
def make_payment(self, amount):
self.balance -= amount
# declare child class here
class PlatinumClient(Person, CardHolder):
def __init__(self, name, address, account_number):
super().__init__(name, address)
super(Person, self).__init__(account_number)
self.cash_back = 0.02
self.rewards = 0
def process_sale(self, price):
self.rewards = int( (price * 0.02) )
platinum = PlatinumClient("Sarah", "101 Main Street", 123364)
# Task: Expected output:
platinum.process_sale(100) # n/a
print(platinum.rewards) # 2
print(platinum.balance) # 100
platinum.make_payment(50) # n/a
print(platinum.balance) # 50
print(platinum.get_info()) # Sarah lives at 101 Main Street.

uj5u.com熱心網友回復:
您正在覆寫process_sale,但沒有呼叫原始方法。所以沒有添加余額。您可以通過運行預期的輸出來看到這一點(列印platinum.balance產量為 0,但應為產量100)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/348618.html
