подклассы Python - PullRequest
       20

подклассы Python

7 голосов
/ 28 ноября 2011

В настоящее время у меня есть класс с именем Polynomial. Инициализация выглядит следующим образом:

def __init__(self, *termpairs):
    self.termdict = dict(termpairs) 

Я создаю полином, делая ключи экспонентами и соответствующие значения являются коэффициентами. Чтобы создать экземпляр этого класса, введите следующее:

d1 = Polynomial((5,1), (3,-4), (2,10))

что делает словарь примерно таким:

{2: 10, 3: -4, 5: 1}

Теперь я хочу создать подкласс класса полиномов с именем Quadratic. Я хочу вызвать конструктор класса Polynomial в конструкторе класса Quadratic, однако я не совсем уверен, как это сделать. Я попробовал:

class Quadratic(Polynomial):
def __init__(self, quadratic, linear, constant):
    Polynomial.__init__(self, quadratic[2], linear[1], constant[0])

но я получаю ошибки, у кого-нибудь есть советы? Я чувствую, что использую неправильные параметры, когда вызываю конструктор класса Polynomial.

Ответы [ 2 ]

15 голосов
/ 28 ноября 2011

Вы должны также использовать super() вместо непосредственного использования конструктора.

class Quadratic(Polynomial):
    def __init__(self, quadratic, linear, constant):
       super(Quadratic, self).__init__(quadratic[2], linear[1], constant[0])
11 голосов
/ 28 ноября 2011

Вы, вероятно, хотите

class Quadratic(Polynomial):
    def __init__(self, quadratic, linear, constant):
        Polynomial.__init__(self, (2, quadratic), (1, linear), (0, constant))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...