Python 類的繼承__init__() takes exactly 3 arguments (1 given)


類(class),可以繼承基類以便形成具有自己獨特屬性的類,我們在面向對象的編程中,經常用到類及其繼承,可以說沒有什么不是類的,今天我們就來詳細探討一下在python中,類的繼承是如何做的。

  1. 我們假設有一個類叫做point,顧名思義,point就是一個點,它有橫坐標和縱坐標。我們在python中創建一個point類(書上說類名稱都要開頭字母大寫,這是國際慣例)

  2. 最簡單的繼承類的方式是這樣:只需要在生命類的時候加一個括號和基類

  3. 這種方法並沒有聲明該類的構造器,這樣它會隱性調用基類的構造器,所以,在實例化的時候,也要注意基類的構造器需要哪些參數,不要出現這樣的錯誤:這種錯誤容易發生是因為我們在子類的聲明中並沒有看到什么參數,在使用的時候就容易忘記基類中需要的參數

    Traceback (most recent call last):

      File "<pyshell#11>", line 1, in <module>

        a=point1()

    TypeError: __init__() takes exactly 3 arguments (1 given)

     

  4. 這樣來用就沒問題了。

  5. 類的繼承一般情況下,我們都是要重寫類的構造器,然后再調用基類的構造器,不然基類的構造器在這種情況下不會自動調用。應該這樣寫:類point2比基類增加了一個屬性z

  6. 實例化:

  7. 我們看這樣一個寫法特別容易出錯:你能看出哪里錯了嗎?錯誤代碼:

    Traceback (most recent call last):

      File "<pyshell#50>", line 1, in <module>

        b=point2(1,2,3)

      File "<pyshell#45>", line 3, in __init__

        point.__init__(x,y)

    TypeError: unbound method __init__() must be called with point instance as first argument (got int instance instead)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM