Что такое основной пример единичного наследования с помощью супер () ключевое слово в Python?

примечание Депрекации:
Согласно официальное руководство Matplotlib , использование pylab модуль больше не рекомендуется. Рассмотрите использование matplotlib.pyplot модуль вместо этого, как описано этот другой ответ .

следующее, кажется, работает:

from pylab import rcParams
rcParams['figure.figsize'] = 5, 10

Это делает ширину фигуры 5 дюймами и ее высоту 10 дюймы .

класс иллюстрации тогда использует это в качестве значения по умолчанию для одного из его аргументов.

27
задан Ricardo Altamirano 6 July 2012 в 15:35
поделиться

2 ответа

В Python> = 3.0, например:

class Foo():
    def __init__(self, frob, frotz)
        self.frobnicate = frob
        self.frotz = frotz

class Bar(Foo):
    def __init__(self, frob, frizzle)
        super().__init__(frob, 34)
        self.frazzle = frizzle

Подробнее здесь: http://docs.python.org/3.1/library/functions.html#super

РЕДАКТИРОВАТЬ: Как сказано в другом ответе, иногда просто использование Foo .__ init __ (self, frob, 34) может быть лучшим решением. (Например, при работе с определенными формами множественного наследования.)

26
ответ дан 28 November 2019 в 04:59
поделиться

Если вы хотите, чтобы класс Bar установил значение 34 в своем конструкторе, это будет работать:

class Foo(object):
     def __init__(self, frob, frotz):
          self.frobnicate = frob
          self.frotz = frotz

class Bar(Foo):
     def __init__(self, frob, frizzle):
          super(Bar, self).__init__(frob, frizzle)
          self.frotz = 34
          self.frazzle = frizzle


bar = Bar(1,2)
print "frobnicate:", bar.frobnicate
print "frotz:", bar.frotz
print "frazzle:", bar.frazzle

Однако super вносит свои собственные сложности. См., Например, , который считается вредным . Для полноты, вот эквивалентная версия без super .

class Foo(object):
     def __init__(self, frob, frotz):
          self.frobnicate = frob
          self.frotz = frotz

class Bar(Foo):
     def __init__(self, frob, frizzle):
          Foo.__init__(self, frob, frizzle)
          self.frotz = 34
          self.frazzle = frizzle


bar = Bar(1,2)
print "frobnicate:", bar.frobnicate
print "frotz:", bar.frotz
print "frazzle:", bar.frazzle
29
ответ дан 28 November 2019 в 04:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: