У меня есть несколько классов, хранящихся в модуле с именем car.py.Один класс использует другой.Вот код.
from car import ElectricCar
my_tesla = ElectricCar('tesla', 'model s', 2016)
Класс ElectricCar использует класс Battery, хранящийся в том же модуле, но Battery не импортируется.
class ElectricCar(Car):
"""Represent aspects of a car, specific to electric vehicles."""
def __init__(self, make, model, year):
"""
Initialize attributes of the parent class.
Then initialize attributes specific to an electric car.
"""
super().__init__(make, model, year)
self.battery = Battery()
Вот родительский класс Car изтот же модуль car.py.
class Car():
"""A simple attempt to represent a car."""
def __init__(self, make, model, year):
"""Initialize attributes to describe the car."""
self.make = make
self.model = model
self.year = year
self.odometer_reading = 0
Вот класс Battery из того же модуля car.py.
class Battery():
"""A simple attempt to model a battery for an electric car."""
def __init__(self, battery_size=70):
"""Initialize the battery's attributes."""
self.battery_size = battery_size
def describe_battery(self):
"""Print a statement describing the battery size."""
print(f"This car has a {self.battery_size}-kwh battery!")
def get_range(self):
"""Print a statement about the range this battery provides."""
if self.battery_size == 70:
range = 240
elif self.battery_size == 85:
range = 270
message = f"This car can go approximately {range}"
message += " mile on a full charge."
print(message)
def upgrade_battery(self):
if self.battery_size == 70:
self.battery_size = 85
И, наконец, код, который я использую для создания и использования объекта.
my_tesla = ElectricCar('tesla', 'model s', 2016)
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()
my_tesla.battery.upgrade_battery()
my_tesla.battery.get_range()
Код работает просто отлично.Мой вопрос заключается в том, как при импорте ElectricCar он может получить доступ к классу «Батарея», если я не импортировал «Батарею» специально.В качестве дополнительного вопроса, который похож, как метод super () может получить доступ к родительскому классу, когда родительский класс также не был импортирован?Это как Python естественным образом работает?