Наследование в python: «super () принимает как минимум 1 аргумент (задано 0)» - PullRequest
0 голосов
/ 06 июля 2018
import math

class Rocket(object):

    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y

    def move_up(self):
        self.y += 1

    def move_rocket(self, x_inc=0, y_inc=1):
        """move rocket by default move in upward direction by 1
        """
        self.x += x_inc
        self.y += y_inc

    def get_distance(self, other_Rocket):
        """calculates distance between current and other rocket
        """            
        return(math.sqrt(((self.x - other_Rocket.x)**2) + (self.y - other_Rocket.y)**2))


class SpaceShuttle(Rocket):

    def __init__(self, x=0, y=0, flights_completed=0):
        super().__init__(x, y)
        self.flights_completed = flights_completed

shuttle=SpaceShuttle(2, 3, 10)

print(shuttle)

В приведенном выше коде производный класс выдает следующую ошибку:

Traceback (последний вызов был последним): Файл "/home/sumeedha/PycharmProjects/Basics/classes.py", строка 50, в челноке = SpaceShuttle (2,3,10)
Файл "/home/sumeedha/PycharmProjects/Basics/classes.py", строка 21, в init super (). init (x, y) Ошибка типа: super () принимает как минимум 1 аргумент (задано 0)

1 Ответ

0 голосов
/ 06 июля 2018

Вы используете Python 2, тогда как первый аргумент для super(), type не является обязательным, как в Python 3. https://docs.python.org/2.7/library/functions.html#super

Вам нужно будет позвонить super() так:

super(SpaceShuttle, self).__init__(x, y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...