zjmm19 发表于 2020-10-11 21:09:42

关于面向对象电动车

class Car():
    def __init__(self,make,model,year):
      self.make=make
      self.model=model
      self.year=year
      self.odometer_reading=0

    def get_descriptive_name(self):
      long_name=str(self.year)+''+self.make+''+self.model
      return long_name.title()

    def read_odometer(self):
      print("This car has"+str(self.odometer_reading)+"miles on it.")

    def update_odometer(self,mileage):
      if mileage>=self.odometer_reading:
            self.odometer_reading=mileage
      else:
            print("You can't rool back an odometer!")

    def increment_odometer(self,miles):
      self.odometer_reading+=miles

class Battery():
    def __init__(self,battery_size=70):
      self.battery_size=battery_size

    def describe_battery(self):
      print("This car has a"+str(self.battery_size)+"-kWh battery.")

    def get_range(self):
      if self.battery_size==70:
            range=240
      elif self.battery_size==85:
            range=270

      message='This car can go apporximately'+str(range)
      message+="miles on a full charge."
      print(message)
      
class ElectricCar(Car):

    def __init__(self,make,model,year):

      super().__init__(make,model,year)
      self.battery_size=Battery()

   

my_tesla=ElectricCar('tesla','model s',2016)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()
my_tesla.battery.get_range()   

为什么会报错:2016Teslamodel S
Traceback (most recent call last):
File "C:/Users/zjm16/Desktop/python/ecar.py", line 52, in <module>
    my_tesla.describe_battery()
AttributeError: 'ElectricCar' object has no attribute 'describe_battery'
>>>

kylin121380 发表于 2020-10-11 22:00:00

本帖最后由 kylin121380 于 2020-10-11 22:01 编辑

my_tesla是实例化的Electriccar,Electriccar没有describe_battery函数,想要调用的话应该是my_tesla.battery_size.describe_battery()
页: [1]
查看完整版本: 关于面向对象电动车