轉:python學習——類中為什麽要定義__init__()方法
阿新 • • 發佈:2019-03-14
dict tar tail 綁定 創建 原創 但是 area 似的
因此吧,需要在類中定義init()方法,方便創建實例的時候,需要給實例綁定上屬性,也方便類中的方法(函數)的定義。
2、用init()方法定義類
上述同樣的例子,采用init()方法定義類,如下:
學習Python的類,一直不太理解為什麽一定要定義init()方法,現在簡要談一下自己的理解吧。
1、不用init()方法定義類
定義一個矩形的類,目的是求周長和面積。
1 class Rectangle(): 2 def getPeri(self,a,b): 3 return (a + b)*2 4 def getArea(self,a,b): 5 return a*b 6 7 rect = Rectangle() 8 print(rect.getPeri(3,4)) 9 print(rect.getArea(3,4))10 print(rect.__dict__)
得到結果:
1 14 2 12 3 {}
從上例中可以看到,我們在類中並沒有定義init()方法,但是也能夠得到類似的要求,結果返回了矩形實例rect的周長及面積。
但是,我們通過print(rect.dict)來看這個實例的屬性,竟然是空的,我定義了一個矩形,按理來說它的屬性應該是它的長、寬。但是它竟然沒有。這就是沒有定義init()的原因了。
並且,在實例化對象的時候,rect = Rectangle()參數為空,沒有指定a、b的值,只有在調用函數的時候才指定了。且類中定義的每個方法的參數都有a、b,這顯然浪費感情,在類中直接指定方法就可以了。、
因此吧,需要在類中定義init()方法,方便創建實例的時候,需要給實例綁定上屬性,也方便類中的方法(函數)的定義。
2、用init()方法定義類
上述同樣的例子,采用init()方法定義類,如下:
1 class Rectangle(): 2 def __init__(self,a,b): 3 self.a = a 4 self.b = b 5 def getPeri(self): 6 return (self.a + self.b)*2 7 def getArea(self): 8 returnself.a * self.b 9 10 rect = Rectangle(3,4) 11 print(rect.getPeri()) 12 print(rect.getArea()) 13 print(rect.__dict__)
得到結果:
1 14 2 12 3 {‘a‘: 3, ‘b‘: 4}
定義完init()後,創建的每個實例都有自己的屬性,也方便直接調用類中的函數。
上述兩個程序的不同之處,還望像我一樣的初學者細細體會。
---------------------
作者:geerniya
來源:CSDN
原文:https://blog.csdn.net/geerniya/article/details/77487941
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
轉:python學習——類中為什麽要定義__init__()方法