我从哪里得到输出中的 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)。