2010-06-16 3 views
1

Скажем, у меня есть ниже код:Python Атрибуты и наследование

class Class1(object): 

    def __init__(self): 
     self.my_attr = 1 
     self.my_other_attr = 2 

class Class2(Class1): 

    def __init__(self): 
     super(Class1,self).__init__() 

Почему Class2 не наследует атрибуты Class1?

+0

Вы также можете проверить эту статью: http://fuhm.net/super-harmful/ Так как я прочитал, что я бы просто сделать Class1 .__ INIT __ (Я) –

+0

@ Уэйн: Эта статья вводит в заблуждение и несколько неодобрительно (но это очень интересное и полезное чтение). Множественное наследование действительно является проблемой, 'супер' больше похож на часть решения. Выбор на «супер» - это как сказать, что ремни безопасности плохие, потому что вы все равно можете попасть в аварию. Вы, как правило, намного лучше, если используете 'super'. – nikow

+0

nikow, Есть ли хорошие чтения, которые объясняют, почему супер лучше? –

ответ

10

Вы использовали super неправильно, измените его на

super(Class2, self).__init__() 

В основном вы говорите super смотреть выше данного класса, так что если вы даете Class1 то, что __init__ метод никогда не вызывается.

+0

Спасибо, это сделано –

+0

Помогло мне! – espais

4

Потому что вы даете super неправильный класс. Оно должно быть:

class Class2(Class1): 

    def __init__(self): 
     super(Class2,self).__init__() 
Смежные вопросы