前面《第8.1節 python類的構造方法__init__深入剖析:語法釋義》一節介紹了構造方法定義的語法,並進行了語法解釋說明,本節將通過案例來說明構造方法引數傳遞及返回值的情況。
一、 案例說明
本節定義乙個汽車類,它有四個例項變數:wheelcount, power,oilcostperkm,totaldistance,分別對應輪子數、動力、每公里油耗、行駛總里程。為了聚焦內容,我們只在構造方法中顯示引數傳入值,不做任何處理。類定義如下:
class car():
def __init__(self,*args,**kwargs):
print("in __init__:args=",args,",kwargs=",kwargs)
二、 案例1:使用常規傳遞實參模式定義例項
car=car(4,'汽油發動機',0.1,0)#引數分別是wheelcount, power,oilcostperkm,totaldistance
執行截圖:
三、 案例2:使用關鍵字引數傳遞實參模式定義例項
使用關鍵字引數方式傳遞實參,關鍵字的名字和類例項變數不一定要對應,只要系統知道誰對誰就可以。
car=car(wheel_count=4,power='汽油發動機',oilcost_perkm=0.1,total_distance=0)
執行截圖:
四、 案例3:使用關鍵字引數和非關鍵字引數混合傳值的模式
car=car(4,'汽油發動機',oilcost_perkm=0.1,total_distance=0)
五、 案例4:不按約定填寫任意個引數
car=car('汽車','測試','隨便填',wheel_count=4,power='汽油發動機',oilcost_perkm=0.1,total_distance=0)
六、 案例5:在建構函式中返回值
1. 類定義:
class car(vehicle):
def __init__(self,wheelcount, power,oilcostperkm):
self.oilcostperkm = oilcostperkm
print("in car __init__:oilcostperkm=",self.oilcostperkm)
super().__init__(wheelcount, power)
return 1
2. 執行例項定義:car=car(4,'汽油發動機',0.1)
由於構造方法有返回值,應該報錯。
3. 截圖:
4. 案例說明:不應該在構造方法中返回值,如果一定要有返回語句,應該返回none。
本節結合案例詳細介紹了構造方法引數的傳遞過程,每個案例都很簡單,但說明:
1、 構造方法中的引數除了多了乙個self引數外,與例項定義時傳遞的引數是一致的;
2、 通過收集引數模式(收集引數的概念請見上一節或《第5.2節 python的函式引數收集》內容)可以支援可變個數的引數,但實際上增加了編碼的代價,需要**支援引數的解碼,一般的構造方法中不建議使用,只有在需要實現特定介面但外圍介面支援可變格式呼叫時才使用,這時也應該優先在構造方法中明確已經確定引數的引數名,只有可變部分用收集引數模式;
3、 構造方法不能返回值,如果一定要有返回語句,請返回none。
**老猿python部落格文章目錄**:
第8 1節 Python類的構造方法 init
一 引言 凡是物件導向設計的語言,在類例項化時都有構造方法,很多語言的構造方法名與類名一致,python中類的構造方法比較特殊,必須是 init 特殊方法。二 語法釋義 1.語法 init self,args,kwargs 其中 1 self為建立的例項,由python自動傳入。各位看官注意 1 關...
第7 9節 案例詳解 Python類封裝
上節介紹了python中類的封裝機制,本節結合乙個具體例子進行詳細說明。我們定義乙個person類,其內部有姓名 年齡和型別三個例項變數,並定義了相關的訪問方法 class person def type self if self.age 16 return 青少年 elif self.age 60...
生存志 第82節 儒門分八派
儒門分八派 當左丘明於西元前451年以105歲高齡駕鶴西遊時,孔子的徒子徒孫們已經將儒學教義傳遍中原大地,並且由於各自見解的不同,儒門也 成了好幾個教派。韓非子 顯學 中提到,世之顯學,儒 墨也。儒之所至,孔丘也。墨之所至,墨翟也。自孔子之死也,有子張之儒,有子思之儒,有顏氏之儒,有孟氏之儒,有漆雕...