Python中__init__的理解

有夢想有行動 發表於 2020-10-17

在Python中定義類經常會用到__init__函式(方法),首先需要理解的是,兩個下劃線開頭的函式是宣告該屬性為私有,不能在類的外部被使用或訪問。而__init__函式(方法)支援帶引數類的初始化,也可為宣告該類的屬性(類中的變數)。__init__函式(方法)的第一個引數必須為self,後續引數為自己定義。

例如我們定義一個Box類,有width, height, depth三個屬性,以及計算體積的方法:
從文字理解比較困難,通過下面的例子能非常容易理解這個概念:

#!/usr/bin/python
# -*- coding utf-8 -*-
#Created by Lu Zhan
 
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.depth
 
b = Box()
b.setDimension(10, 20, 30)
print(b.getVolume())

我們在Box類中定義了setDimension方法去設定該Box的屬性,這樣過於繁瑣,而用__init__()這個特殊的方法就可以方便地自己對類的屬性進行定義,init()方法又被稱為構造器(constructor)。

#!/usr/bin/python
# -*- coding utf-8 -*-
#Created by Lu Zhan
 
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.depth
 
b = Box(10, 20, 30)
print(b.getVolume())