Отсутствует атрибут у экземпляра класса
Никак не могу понять, в чем проблема. Код идентичен коду из книги. Пример из книги Эрика Мэтиза "Изучаем питон"
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 read_odometer(self):
print(f"This car has {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 on odometer!")
def increment_odometer(self, miles):
self.odometer_reading += miles
class Battery():
def __init___(self, battery_size=54):
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()
my_tesla = ElectricCar('tesla', 'model_s', '2019')
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
Traceback (most recent call last):
File "c:/Python/emip_9_2.py", line 216, in <module>
my_tesla.battery.describe_battery()
File "c:/Python/emip_9_2.py", line 202, in describe_battery
print(f"This car has a {self.battery_size}-kWh battery.")
AttributeError: 'Battery' object has no attribute 'battery_size'
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
В конструкторе Battery у вас 3 нижних подчеркивания, вместо двух. Поэтому этот метод не стал конструктором и атрибут battery_size не был создан:
class Battery():
def __init___(self, battery_size=54):
# ^^^
self.battery_size = battery_size
def describe_battery(self):
print(f"This car has a {self.battery_size}-kWh battery.")