tusong 发表于 2022-9-29 01:17:51

大哥救命啊,为什么报错啊,头都扣烂了。

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 = f'{self.year} {self.make} {self.model}'
      return long_name.title()

    def update_odometer(self, mileage):
      '''
      将里程数读数设置为指定的值
      禁止将里程表读数回调
      '''
      if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
      else:
            print('you not can roll back an odometer!')

    def increment_odometer(self, miles):
      '''将里程表读数增加指定的量'''
      self.odometer_reading += miles

    def read_odometer(self):
      '''打印一条指出汽车里程的消息'''
      print(f'This car has {self.odometer_reading} miles on it.')


class Battery:
    '''一次模拟电动汽车电瓶的简单测试'''

    def __init__(self, battery_size=75):
      '''初始化电瓶的属性'''
      self.battery_size = battery_size

    def describe_battery(self):
      '''打印一条描述电瓶容量的消息'''
      print(f'this car has a {self.battery_size}-kwh battery')


class ElectricCar(Car):
    '''电动汽车的独特之处'''

    def __init__(self, make, model, year):
      '''初始化父类的属性'''
      super().__init__(make, model, year)
      self.battery=Battery

    def descride_battery(self):
      '''打印一条描述电瓶容量的消息'''
      print(f'this car has a {self.battery_size}-kwh battery')


my_tesla = ElectricCar('tesla', 'model', 2019)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()

临时号 发表于 2022-9-29 02:04:00

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 = f'{self.year} {self.make} {self.model}'
      return long_name.title()

    def update_odometer(self, mileage):
      '''
      将里程数读数设置为指定的值
      禁止将里程表读数回调
      '''
      if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
      else:
            print('you not can roll back an odometer!')

    def increment_odometer(self, miles):
      '''将里程表读数增加指定的量'''
      self.odometer_reading += miles

    def read_odometer(self):
      '''打印一条指出汽车里程的消息'''
      print(f'This car has {self.odometer_reading} miles on it.')


class Battery:
    '''一次模拟电动汽车电瓶的简单测试'''

    def __init__(self, battery_size=75):
      '''初始化电瓶的属性'''
      self.battery_size = battery_size

    def describe_battery(self):
      '''打印一条描述电瓶容量的消息'''
      print(f'this car has a {self.battery_size}-kwh battery')


class ElectricCar(Car):
    '''电动汽车的独特之处'''

    def __init__(self, make, model, year):
      '''初始化父类的属性'''
      super().__init__(make, model, year)
      self.battery=Battery()

    def descride_battery(self):
      '''打印一条描述电瓶容量的消息'''
      print(f'this car has a {self.battery_size}-kwh battery')


my_tesla = ElectricCar('tesla', 'model', 2019)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()

Brick_Porter 发表于 2022-9-29 07:57:10

问题出现在self.battery=Battery这里,我们需要实例化Battery这个类,也就是在它后面添加一对括号。
改成self.battery = Battery()就可以了。

Battery表示一个类,Battery()表示这个类型下的一个具体的对象(也叫做实例)。打个比方,Human表示人这个类别,Human()表示一个具体的人。
页: [1]
查看完整版本: 大哥救命啊,为什么报错啊,头都扣烂了。