python中__init__()方法詳情
python
類中定義的函數稱為方法, init ()
方法本質也是一個函數。這個函數的作用是初始化實例後的對象。
具體如下例:
init()
方法的作用是初始化實例後的對象cqueue
。
class CQueue:
類中的函數稱為方法 ,這裡的__init__()
方法在類實例化是被自動調用。若類定義瞭__init__()
方法,類的實例化操作會自動調用__init__
方法。
__init__
方法可以有參數,參數通過__init__()
傳遞到類的實例化操作上。self
代表的是類的實例,而非類。
類的方法和普通函數的區別隻有一個,類的方法必須有一個額外的第一個參數名稱,按照慣例它的名稱是self
。
class CQueue def __init__(self): self.A,self.B=[],[] def appendTail(self,value:int)->None: self.A.append(value) def deleteHead(self)->int: if self.B: return self.B.pop() if not self.A: return -1 while self.A: self.B.append(self.A.pop()) print(self.B) return self.B.pop() if __name__=="__main__": #類CQueue的實例化,這裡的括號()不能丟。 #__init__()方法的作用是初始化實例後的對象cqueue。 cqueue=CQueue() #調用類中的appendTail()函數,增加元素。 cqueue.appendTail(243) cqueue.appendTail(2) cqueue.appendTail(4) cqueue.deleteHead() cqueue.deleteHead()
有無__init__的區別,結論如下:
1.在類實例化時,如果類中有__init__
方法,此時調用__init__
方法。
2.若該類沒有父類,也沒有__init__
方法,則不會有任何操作。即對象不會被初始化。
3.若該類有父類,則去調用該類的父類中__init__
方法。
具體實驗如下:
定義三個類:CQueue
、student
、sum
,其中CQueue
、student
是sum
的父類。
- 實驗1說明:
__init__
方法的作用是初始化實例的類。 - 實驗2說明:當子類沒有__init__方法時,會在父類中進行初始化。
- 實驗3,4說明:
sum(student,CQueue )
,子類sum
沒有__init__方法時,會調用父類,並且調用父類中排在前面的父類,這裡student類在CQueue前,所以調用student
類中的__init__
方法初始化實例的類。 - 實驗5說明:在類及其父類均沒有初始化時,實例化的類不會被初始化。
實驗1代碼:
class CQueue: #類中的函數稱為方法 ,這裡的__init__()方法在類實例化是被自動調用。若類定義瞭__init__()方法,類的實例化操作會自動調用__init__方法。 #__init__方法可以有參數,參數通過__init__()傳遞到類的實例化操作上。self代表的是類的實例,而非類。 #類的方法和普通函數的區別隻有一個,類的方法必須有一個額外的第一個參數名稱,按照慣例它的名稱是self。 def __init__(self): self.A,self.B=[],[] def appendTail(self,value:int)->None: self.A.append(value) def deleteHead(self)->int: if self.B: return self.B.pop() if not self.A: return -1 while self.A: self.B.append(self.A.pop()) print(self.B) return self.B.pop() class student: def __init__(self): print("測試輸出1") def test1(self): print("測試輸出2") class sum(student,CQueue ): def __init__(self): print("測試輸出3") def test2(self): print("測試輸出4") if __name__=="__main__": #類CQueue的實例化,這裡的括號()不能丟。 s=sum()
實驗結果:
實驗2代碼:
class CQueue: #類中的函數稱為方法 ,這裡的__init__()方法在類實例化是被自動調用。若類定義瞭__init__()方法,類的實例化操作會自動調用__init__方法。 #__init__方法可以有參數,參數通過__init__()傳遞到類的實例化操作上。self代表的是類的實例,而非類。 #類的方法和普通函數的區別隻有一個,類的方法必須有一個額外的第一個參數名稱,按照慣例它的名稱是self。 def __init__(self): self.A,self.B=[],[] def appendTail(self,value:int)->None: self.A.append(value) def deleteHead(self)->int: if self.B: return self.B.pop() if not self.A: return -1 while self.A: self.B.append(self.A.pop()) print(self.B) return self.B.pop() class student: def __init__(self): print("測試輸出1") def test1(self): print("測試輸出2") class sum(student,CQueue ): # def __init__(self): # print("測試輸出3") def test2(self): print("測試輸出4") if __name__=="__main__": #類CQueue的實例化,這裡的括號()不能丟。 s=sum()
實驗結果:
實驗3,4,省略。
實驗5:
class CQueue: #類中的函數稱為方法 ,這裡的__init__()方法在類實例化是被自動調用。若類定義瞭__init__()方法,類的實例化操作會自動調用__init__方法。 #__init__方法可以有參數,參數通過__init__()傳遞到類的實例化操作上。self代表的是類的實例,而非類。 #類的方法和普通函數的區別隻有一個,類的方法必須有一個額外的第一個參數名稱,按照慣例它的名稱是self。 def __init__(self): self.A,self.B=[],[] def appendTail(self,value:int)->None: self.A.append(value) def deleteHead(self)->int: if self.B: return self.B.pop() if not self.A: return -1 while self.A: self.B.append(self.A.pop()) print(self.B) return self.B.pop() class student: # def __init__(self): # print("測試輸出1") def test1(self): print("測試輸出2") class sum(student,CQueue ): # def __init__(self): # print("測試輸出3") def test2(self): print("測試輸出4") if __name__=="__main__": #類CQueue的實例化,這裡的括號()不能丟。 s=sum()
實驗結果:
從實驗結果可以看出,沒有任何操作。
到此這篇關於 python中__init__()方法詳情的文章就介紹到這瞭,更多相關 python中__init__()方法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python語法學習之super(),繼承與派生
- Python編程super應用場景及示例解析
- Python中super()的理解以及應用場景實例
- Python基礎之元類詳解
- Python實現學生管理系統(面向對象版)