以下是**例子:
class parent(object):
def __init__(self):
self.name = "yy"
def override(self):
print "parent override()"
def implicit(self):
print "parent implicit()"
def altered(self):
print "parent altered()"
class child(parent):
def __init__(self):
#super(child,self).__init__()
pass
def override(self):
print "child override()"
def altered(self):
print "child, before parent altered()"
super(child, self).altered()
print "child, after parent altered()"
s = parent()
c = child()
print c.name
然後結果是這樣的:
ps c:\users\yue\mystuff> python ex1.py
traceback (most recent call last):
file "ex1.py", line 17, in
print c.name
attributeerror: 'child' object has no attribute 'name'
用子類物件去呼叫應該從父類繼承的name屬性時候,表示沒有整合到
從這裡可以看出不會預設呼叫父類的init方法
然後加入一句super方法之後,
class child(parent):
def __init__(self):
super(child,self).__init__()
結果是這樣:
ps c:\users\yue\mystuff> python ex1.py
yy所以可以看出必須顯示呼叫super的init()方法才行(關於在記憶體中是如何進行的,原諒本人才學了4天的python,現在暫時還未得知)
然後當你子類沒有init方法的時候,就會預設地去呼叫父類的init方法(感覺真扯。。)
class parent(object):
def __init__(self):
self.name = "yy"
class child(parent):
pass
s = parent()
c = child()
print c.name
然後結果就是:
ps c:\users\yue\mystuff> python ex1.py
yy
關於python 的空的 init
0 宣告,本篇只討論空 init py檔案的情況,不顧前提非得說 init py檔案裡面也可以寫東西的不在此討論了範圍之內,重點是個 空 字。1 很多地方的資料夾都有 init py。網上一般都說,有了這個東西會把它當作乙個包,否則import這個資料夾會出錯。但這就好像和說python檔案中如果有...
關於Python模組中 init
區分乙個含有python指令碼的資料夾和python包 可以執行import package操作的資料夾 的標誌就是看,這個資料夾下有沒有 ini py檔案,當乙個資料夾下有這個檔案,你可以進行匯入相關操作,但是如果這個資料夾沒有這個檔案,那麼python直譯器是沒有辦法去執行import操作的,直...
自定義的init方法和重寫的init方法
自定義乙個init方法 必須以initwith開頭 person p person alloc init person p1 person new 也呼叫了系統的init方法或者是重寫的init方法 與上式等價 import person.h implementation person 重寫init...