qq_48722761
qq_48722761
2021-01-29 22:13
采纳率: 100%
浏览 46

请问这行代码无法运行的原因是什么?和python版本有关吗?

代码如下 :
#一次模拟汽车的简单尝试###
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 roll 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.")
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.battery.describe_battery()

python版本:3.9

运行结果:

Traceback (most recent call last):
  File "C:\Users\老大\Desktop\python\electric_car_1.py", line 31, in <module>
    my_tesla.battery.describe_battery()
AttributeError: 'Electriccar' object has no attribute 'battery'

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • weilixin88
    Levi_wlx 2021-01-29 23:53
    已采纳

    问题这不是很明确嘛,就是 'Electriccar'没有 'battery'这个属性。所以,你把 battery_size写错了

    点赞 评论
  • PY0312
    Nick Peng 2021-01-31 04:20
    my_tesla.battery.describe_battery()换成
    my_tesla.battery_size.describe_battery()
    点赞 评论
  • weixin_44157703
    张博文不抱怨 2021-02-11 00:25

    倒数第四行代码写错了

    改成这个  self.battery = Battery()

    或者楼上的方法也是可以

    就是你的代码里添加的属性是self.battery_size=Battery()

    而你最后一句调用却是my_tesla.battery.describe_battery()

    这个没对应上就报错,你让这俩对应上就对了。

    点赞 评论

相关推荐