<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Python 繼承 > 原文: [https://www.programiz.com/python-programming/inheritance](https://www.programiz.com/python-programming/inheritance) #### 繼承使我們能夠定義一個類,該類從父類中獲取所有功能,并允許我們添加更多功能。 在本教程中,您將學習在 Python 中使用繼承。 ## Python 繼承 繼承是面向對象編程中的一項強大功能。 它指的是定義新的[類](/python-programming/class),而對現有類幾乎沒有修改。 新類稱為**派生類(或子類)**,而從其繼承的新類稱為**基類(或父類)**。 * * * ### Python 繼承語法 ```py class BaseClass: Body of base class class DerivedClass(BaseClass): Body of derived class ``` 派生類從基類繼承功能,可以在其中添加新功能。 這導致代碼的可重用性。 * * * ### Python 中的繼承示例 為了演示繼承的使用,讓我們舉一個例子。 多邊形是具有 3 個或更多邊的閉合圖形。 說,我們有一個名為`Polygon`的類,定義如下。 ```py class Polygon: def __init__(self, no_of_sides): self.n = no_of_sides self.sides = [0 for i in range(no_of_sides)] def inputSides(self): self.sides = [float(input("Enter side "+str(i+1)+" : ")) for i in range(self.n)] def dispSides(self): for i in range(self.n): print("Side",i+1,"is",self.sides[i]) ``` 此類具有數據屬性,以將面數`n`和每一面的大小存儲為稱為`side`的列表。 `inputSides()`方法采用每邊的大小,`dispSides()`顯示這些邊的長度。 三角形是具有 3 個邊的多邊形。 因此,我們可以創建一個名為`Triangle`的類,該類繼承自`Polygon`。 這使`Polygon`類的所有屬性可用于`Triangle`類。 我們不需要再次定義它們(代碼可重用性)。`Triangle`可以定義如下。 ```py class Triangle(Polygon): def __init__(self): Polygon.__init__(self,3) def findArea(self): a, b, c = self.sides # calculate the semi-perimeter s = (a + b + c) / 2 area = (s*(s-a)*(s-b)*(s-c)) ** 0.5 print('The area of the triangle is %0.2f' %area) ``` 但是,類`Triangle`具有查找和打印三角形區域的新方法`findArea()`。 這是一個示例運行。 ```py >>> t = Triangle() >>> t.inputSides() Enter side 1 : 3 Enter side 2 : 5 Enter side 3 : 4 >>> t.dispSides() Side 1 is 3.0 Side 2 is 5.0 Side 3 is 4.0 >>> t.findArea() The area of the triangle is 6.00 ``` 我們可以看到,即使我們沒有為類`Triangle`分別定義`inputSides()`或`dispSides()`之類的方法,我們仍然可以使用它們。 如果在類本身中找不到屬性,則搜索繼續到基類。 如果基類本身是從其他類派生的,則將遞歸重復此操作。 * * * ## Python 中的方法覆蓋 在上面的示例中,請注意,在`Triangle`和`Polygon`這兩個類別中都定義了`__init__()`方法。 發生這種情況時,派生類中的方法將覆蓋基類中的方法。 也就是說,`Triangle`中的`__init__()`優先于`Polygon`中的`__init__`。 通常,當覆蓋基本方法時,我們傾向于擴展定義而不是簡單地替換它。 通過從派生類中的基類中調用基類中的方法(從`Triangle`中的`__init__()`中調用`Polygon.__init__()`)來完成相同的操作。 更好的選擇是使用內置函數`super()`。 因此,`super().__init__(3)`等同于`Polygon.__init__(self,3)`,因此是首選。 要了解有關 Python 中`super()`函數的更多信息,請訪問 [Python `super()`函數](http://rhettinger.wordpress.com/2011/05/26/super-considered-super/)。 兩個內置函數`isinstance()`和`issubclass()`用于檢查繼承。 如果對象是該類或從其派生的其他類的實例,則函數`isinstance()`返回`True`。 Python 中的每個類都繼承自基類`object`。 ```py >>> isinstance(t,Triangle) True >>> isinstance(t,Polygon) True >>> isinstance(t,int) False >>> isinstance(t,object) True ``` 同樣,`issubclass()`用于檢查類繼承。 ```py >>> issubclass(Polygon,Triangle) False >>> issubclass(Triangle,Polygon) True >>> issubclass(bool,int) True ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看