關於python的 init 方法的一點解釋

2021-06-28 18:20:17 字數 1569 閱讀 7026

以下是**例子:

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...