亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

Python 继承

Python 继承

继承使我们能够定义一个类,该类从父类中获取所有功能并允许我们添加更多功能。在本教程中,您将学习在 Python 中使用继承。

视频:Python 继承

Python 中的继承

继承是面向对象编程中的一个强大功能。

它指的是定义一个新类,对现有类进行很少或没有修改。新类称为派生(或子)类 而它所继承的那个被称为基(或父)类 .


Python 继承语法

class BaseClass:
  Body of base class
class DerivedClass(BaseClass):
  Body of derived class

派生类从基类继承特性,可以向其添加新特性。这导致代码的可重用性。


Python 中的继承示例

为了演示继承的使用,我们举个例子。

多边形是具有 3 条或更多条边的封闭图形。比如说,我们有一个名为 Polygon 的类 定义如下。

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的数据属性 和每边的大小作为一个名为 sides 的列表 .

inputSides() 方法接受每边的大小和 dispSides() 显示这些边长。

三角形是具有 3 条边的多边形。因此,我们可以创建一个名为 Triangle 的类 继承自 Polygon .这使得 Polygon 的所有属性 Triangle 可用的类 类。

我们不需要再次定义它们(代码可重用性)。 三角形 可以定义如下。

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() 查找并打印三角形的面积。这是一个示例运行。

>>> 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

我们可以看到,即使我们没有定义像 inputSides() 这样的方法 或 dispSides() 对于类 Triangle 分开,我们可以使用它们。

如果在类本身中找不到属性,则继续搜索基类。如果基类本身是从其他类派生的,这会递归重复。


Python 中的方法覆盖

在上面的例子中,注意 __init__() 方法在两个类中都定义了,Triangle 以及 多边形 .发生这种情况时,派生类中的方法会覆盖基类中的方法。也就是说,__init__()三角形 优先于 __init__多边形 .

通常,在覆盖基本方法时,我们倾向于扩展定义而不是简单地替换它。通过从派生类中调用基类中的方法(调用 Polygon.__init__() 来自 __init__()Triangle )。

更好的选择是使用内置函数 super() .所以,super().__init__(3) 相当于 Polygon.__init__(self,3) 并且是首选。了解更多关于 super() Python中的函数,请访问Python super() 函数。

两个内置函数isinstance()issubclass() 用于检查继承。

函数isinstance() 返回 True 如果对象是类的实例或从它派生的其他类。 Python中的每个类都继承自基类object .

>>> isinstance(t,Triangle)
True

>>> isinstance(t,Polygon)
True

>>> isinstance(t,int)
False

>>> isinstance(t,object)
True

同样,issubclass() 用于检查类继承。

>>> issubclass(Polygon,Triangle)
False

>>> issubclass(Triangle,Polygon)
True

>>> issubclass(bool,int)
True

Python

  1. C# 继承
  2. Python 数据类型
  3. Python 运算符
  4. Python pass 语句
  5. Python字典
  6. Python 自定义异常
  7. Python 面向对象编程
  8. Python 运算符重载
  9. Python @property 装饰器
  10. Python 中的 type() 和 isinstance() 示例
  11. C# - 继承
  12. Python - 面向对象