一、關於構造函數和析構函數 1、python中有構造函數和析構函數,和其他語言是一樣的。如果子類需要用到父類的構造函數,則需要在子類的構造函數中顯式的調用,且如果子類有自己的構造函數,必然不會自動調用父類的構造函數;但是對於沒有構造函數的子類來說,則會自動繼承父類的構造函數,且子類總會預設繼承多個父 ...
一、關於構造函數和析構函數
1、python中有構造函數和析構函數,和其他語言是一樣的。如果子類需要用到父類的構造函數,則需要在子類的構造函數中顯式的調用,且如果子類有自己的構造函數,必然不會自動調用父類的構造函數;但是對於沒有構造函數的子類來說,則會自動繼承父類的構造函數,且子類總會預設繼承多個父類中的第一個父類的構造函數。備註:一般來說,子類應該繼承父類的所有屬性和方法,可將子類中的構造方法理解為覆蓋重寫了父類的構造方法。
2、析構函數和其他語音一樣,在調用del時,才會調用析構函數。應該顯示調用
二、關於重載和覆蓋
python中沒有重載的概念,不能用和類同名的多個函數依照參數個數或者參數名的不同實現重載。python中,相同名字的函數,總是會預設的覆蓋掉前一個函數,這並不方便,但就嚴謹性來說,增加了可讀性可理解性。我認為python之所以沒有重載,一是因為python是動態類型的語言,既然參數只有在運行時才確定,那重載對於python應該是毫無意義的;二是python不允許缺少參數,這點也使得重載對於python毫無意義。備註:c#中可以在父類中寫一個虛方法,然後在子類中使用override重載該方法,調用虛方式時,實際上會調用重寫後的方法。
三、語言類型
毫無疑問的是,python是動態的強類型語言,如果說靜態,目前我見過的只有在列表list中是靜態的。值傳遞傳遞的是值(賦予了新的記憶體一個值),指針傳遞傳遞的是指向記憶體的指針,這個很好理解。
四、關於多態
簡單來說,多態就是一個類的多個表現形式或者表現狀態。python不支持多態,一般用子類繼承父類後重新函數,這其實又是另一個對象了。