Мы определяем суперкласс Vehicle следующим образом, а подкласс Bicycle следующим образом:
class Vehicle:
def __init__(self, colour, wheels, size):
self.colour = colour
self.wheels = wheels
self.size = size
class Cycle(Vehicle):
def __init__(self, colour, wheels, size):
super().__init__(colour, wheels, 'small')
Здесь вы можете видеть, что подкласс Cycle просто принимает значения colors
и wheels
и передает его в суперкласс,и имеет жестко заданный атрибут size=small
.Конструктор подкласса вызывает конструктор суперкласса
. Чтобы проверить, что происходит, мы можем попытаться сделать следующее:
veh = Cycle('Black', 2)
print(veh.colour)
print(veh.wheels)
print(veh.size)
#Black
#2
#small
Обновить На основании комментария OP о нежеланиичтобы иметь атрибут размера, вы можете назначить значение по умолчанию атрибуту размера в суперклассе, например, size=None
, и вам не нужно будет передавать его при создании экземпляра подкласса.
class Vehicle:
def __init__(self, colour, wheels, size=None):
self.colour = colour
self.wheels = wheels
self.size = size
class Cycle(Vehicle):
def __init__(self, colour, wheels):
super().__init__(colour, wheels)
Затем вы можетевызовите это следующим образом
veh = Cycle('Black', 2)
print(veh.colour)
print(veh.wheels)
print(veh.size)
#Black
#2
#None
Вы можете видеть, что значение size
равно None
, что является значением по умолчанию, которое мы выбрали, поскольку мы не передали size
явно, если бы мы передалиэто, мы получили бы значение для атрибута size