1. 程式人生 > >python中super().__init__和類名.__init__的區別

python中super().__init__和類名.__init__的區別

ini 類方法 tro 區別 算法 繼承 應該 per 類的方法

  1. super().__init__相對於類名.__init__,在單繼承上用法基本無差
  2. 但在多繼承上有區別,super方法能保證每個父類的方法只會執行一次,而使用類名的方法會導致方法被執行多次
  3. 多繼承時,使用super方法,對父類的傳參數,應該是由於python中super的算法導致的原因,必須把參數全部傳遞,否則會報錯
  4. 單繼承時,使用super方法,則不能全部傳遞,只能傳父類方法所需的參數,否則會報錯
  5. 多繼承時,相對於使用類名.__init__方法,要把每個父類全部寫一遍, 而使用super方法,只需寫一句話便執行了全部父類的方法,這也是為何多繼承需要全部傳參的一個原因

python中super().__init__和類名.__init__的區別