說我有如下因素代碼: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繼承的屬性?
說我有如下因素代碼: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繼承的屬性?
因爲你給super
錯誤的類。它應該是:
class Class2(Class1):
def __init__(self):
super(Class2,self).__init__()
你也可以想看看這篇文章:http://fuhm.net/super-harmful/ 自從我讀,我會只是做的Class1 .__的init __(個體經營) – 2010-06-16 13:23:04
@韋恩:那篇文章是誤導性的,有點皺眉(但它是一個非常有趣和有用的閱讀)。多重繼承確實是問題,'super'更像是解決方案的一部分。選擇「超級」就像說安全帶不好,因爲在事故中你仍然可能受傷。如果你使用'super',你通常會好得多。 – nikow 2010-06-16 13:27:49
nikow,有沒有什麼好的解釋可以解釋爲什麼超級更好? – 2010-06-16 15:02:59