Python中的__init__作用是什么
看到Python中有個函數(shù)名比較奇特,__init__我知道加下劃線的函數(shù)會自動運行,但是不知道它存在的具體意義..
Python中所有的類成員(包括數(shù)據(jù)成員)都是 公共的 ,所有的方法都是 有效的 。
只有一個例外:如果你使用的數(shù)據(jù)成員名稱以 雙下劃線前綴 比如__privatevar,Python的名稱管理體系會有效地把它作為私有變量。
這樣就有一個慣例,如果某個變量只想在類或?qū)ο笾惺褂茫蛻撘詥蜗聞澗€前綴。而其他的名稱都將作為公共的,可以被其他類/對象使用。記住這只是一個慣例,并不是Python所要求的(與雙下劃線前綴不同)。
同樣,注意__del__方法與 destructor 的概念類似。'
恍然大悟原來__init__在類中被用做構(gòu)造函數(shù),固定寫法,看似很死板,其實有道理
def __init__(self, name): ’’’Initializes the person’s data.’’’ self.name = name print ’(Initializing %s)’ % self.name # When this person is created, he/she # adds to the population Person.population += 1
name變量屬于對象(它使用self賦值)因此是對象的變量
self.name的值根據(jù)每個對象指定,這表明了它作為對象的變量的本質(zhì)。
例如我們定義一個Box類,有width, height, depth三個屬性,以及計算體積的方法:
class Box: def setDimension(self, width, height, depth): self.width = width self.height = height self.depth = depth def getVolume(self): return self.width * self.height * self.depthb = Box()b.setDimension(10, 20, 30)print(b.getVolume())
我們在Box類中定義了setDimension方法去設定該Box的屬性,這樣過于繁瑣,而用__init__()這個特殊的方法就可以方便地自己對類的屬性進行定義,__init__()方法又被稱為構(gòu)造器(constructor)
class Box: #def setDimension(self, width, height, depth): # self.width = width # self.height = height # self.depth = depth def __init__(self, width, height, depth): self.width = width self.height = height self.depth = depth def getVolume(self): return self.width * self.height * self.depthb = Box(10, 20, 30)print(b.getVolume())
知識點擴展:
__init__()要點如下:
1.名稱固定,必須為__init__()
2.第一個參數(shù)固定,必須為self。self指的就是剛剛創(chuàng)建好的示例對象。
3.構(gòu)造函數(shù)通常用來初始化示例屬性,如下代碼就是初始化示例屬性:
4.通過類名(參數(shù)列表),來調(diào)用構(gòu)造函數(shù),調(diào)用后,將創(chuàng)建好的對象返回給相應的變量。
5.__init__()方法:初始化創(chuàng)建好的對象,初始化指的是:'給實例屬性賦值'
6.__new__()方法:用于創(chuàng)建對象,但我們一般無需定義該方法。
以上就是Python中的__init__作用是什么的詳細內(nèi)容,更多關于Python中的__init__到底是干什么的的資料請關注好吧啦網(wǎng)其它相關文章!
相關文章:
1. java實現(xiàn)圖形化界面計算器2. IIS Express 取代 ASP.NET Development Server的配置方法3. javascript設計模式 ? 建造者模式原理與應用實例分析4. Python使用oslo.vmware管理ESXI虛擬機的示例參考5. IntelliJ Idea2017如何修改緩存文件的路徑6. IDEA的Mybatis Generator駝峰配置問題7. 解決idea中yml文件不識別的問題8. 淺談SpringMVC jsp前臺獲取參數(shù)的方式 EL表達式9. 一篇文章帶你了解JavaScript-對象10. Spring-Richclient 0.1.0 發(fā)布
