2016-07-26 27 views
0
class MyObject1(object): 
    def __init__(self): 
     super(MyObject1, self).__init__() 
     pass 

class MyObject2(object): 
    def __init__(self, arg): 
     super(MyObject2, self).__init__() 
     pass 

我看過這樣的python27代碼,什麼做超(myObject的,個體經營).__的init __()做類爲MyObject __init __()函數?

我知道「超級」是指父類的構造函數,

,但我不明白爲什麼這兩個類自稱構造函數‘__init__’,

似乎沒有任何實際效果。

+2

嘗試擴展一個類的初始化,實際上做一些事情,它會產生作用 –

+1

你「在野外」遇到這兩個實際的類和你會問,爲什麼那些使用'super',或者是問題關於'super.init'通常會做什麼? –

+0

似乎很多問題被問過:http://stackoverflow.com/questions/576169/understanding-python-super-with-init-methods和http://stackoverflow.com/questions/222877/how-to-使用超中的Python – linrongbin

回答

3

這些都是在Python一些非常基本的OO方法。閱讀here

superself是相似的:

超()可以讓你避免提及的基類明確,這 可真好。但主要優勢來自多重繼承, 可以發生各種有趣的事情。如果還沒有,請參閱 super上的標準文檔。

(從這個answer

這裏是在行動super一個例子:

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被調用基類(類,當前類繼承)後跟訪問修飾符,訪問基類'.__init__()方法。這就像self,但基礎類。

測試的代碼了,它會更有意義。

相關問題