2010-06-16 131 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 __(个体经营) – 2010-06-16 13:23:04

+0

@韦恩:那篇文章是误导性的,有点皱眉(但它是一个非常有趣和有用的阅读)。多重继承确实是问题,'super'更像是解决方案的一部分。选择“超级”就像说安全带不好,因为在事故中你仍然可能受伤。如果你使用'super',你通常会好得多。 – nikow 2010-06-16 13:27:49

+0

nikow,有没有什么好的解释可以解释为什么超级更好? – 2010-06-16 15:02:59

回答

10

您使用super错误,将其更改为

super(Class2, self).__init__() 

基本上你告诉super以上给定的类,所以如果你给Class1那么__init__方法不会被调用。

+0

谢谢,多数民众赞成在 – 2010-06-16 12:42:40

+0

帮助我! – espais 2012-10-29 18:42:56

4

因为你给super错误的类。它应该是:

class Class2(Class1): 

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