Множественное наследование с большим количеством аргументов, чем в родительских классахPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Множественное наследование с большим количеством аргументов, чем в родительских классах

Сообщение Anonymous »

У меня возникли проблемы с множественным наследованием. Подкласс имеет больше аргументов, чем его родительские классы, и я хочу, чтобы некоторые аргументы обрабатывал первый родительский класс, а остальные я хочу, чтобы другой родительский класс обрабатывал.
Подкласс ElectricCar имеет еще 1 аргумент чем его родительские классы, но этот аргумент не уникален для своего класса, поэтому я не хочу дублировать код. Я хочу, чтобы аргумент «ускорение» обрабатывался классом Car, а «диапазон» обрабатывался классом ElectricVehicle. Но поскольку и Car, и ElectricVehicle принимают только два аргумента, это не работает.

Код: Выделить всё

class Vehicle:
def __init__(self, brand):
self.brand = brand

class Car(Vehicle):
def __init__(self, brand, acceleration):
super().__init__(brand)
self.acceleration = acceleration

class ElectricVehicle(Vehicle):
def __init__(self, brand, range):
super().__init__(brand)
self.range = range

class ElectricCar(Car, ElectricVehicle):
def __init__(self, brand, acceleration, range):
super().__init__(brand, acceleration, range)
Я добавил **kwargs во все классы и больше не получаю эту ошибку. Я также указал каждый аргумент (бренд=бренд). Я не знаю, исправит ли это что-нибудь или из-за этого возникнут проблемы позже в процессе. Нет ли другого способа это исправить? Вот код, когда я добавил **kwargs:

Код: Выделить всё

class Vehicle:
def __init__(self, brand, **kwargs):
super().__init__(**kwargs)
self.brand = brand

class Car(Vehicle):
def __init__(self, brand, acceleration, **kwargs):
super().__init__(brand, **kwargs)
self.acceleration = acceleration

class ElectricVehicle(Vehicle):
def __init__(self, brand, range, **kwargs):
super().__init__(brand, **kwargs)
self.range = range

class ElectricCar(Car, ElectricVehicle):
def __init__(self, brand, acceleration, range, **kwargs):
super().__init__(brand=brand, acceleration=acceleration, range=range, **kwargs)
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... nt-classes
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»