我从哪里得到输出中的 0?
Where did I get 0 in the output?
我的 objective:覆盖 process_sale 方法,以便将每次销售的 2% 添加到奖励中。
我的问题:如何在输出中得到 0?
练习 5:
用左边的parent classes帮你解决这个问题。第一个 parent 是 Person class,其中包含一些非常通用的信息。第二个 class,CardHolder,是信用卡持有人的 class。创建 child class PlantinumClient。这个 class 继承了两个 parent class 的所有属性。另外,childclass有属性cash_back和奖励。 cash_back 应设置为 0.02,rewards 应设置为 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.
您正在重写 process_sale
,但并未调用原始方法。所以没有添加余额。您可以通过 运行 预期输出看到这一点(打印 platinum.balance
产生 0,但应该产生 100
)。
我的 objective:覆盖 process_sale 方法,以便将每次销售的 2% 添加到奖励中。
我的问题:如何在输出中得到 0?
练习 5:
用左边的parent classes帮你解决这个问题。第一个 parent 是 Person class,其中包含一些非常通用的信息。第二个 class,CardHolder,是信用卡持有人的 class。创建 child class PlantinumClient。这个 class 继承了两个 parent class 的所有属性。另外,childclass有属性cash_back和奖励。 cash_back 应设置为 0.02,rewards 应设置为 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.
您正在重写 process_sale
,但并未调用原始方法。所以没有添加余额。您可以通过 运行 预期输出看到这一点(打印 platinum.balance
产生 0,但应该产生 100
)。