python,python什么是继承,什么是多态

  python,python什么是继承,什么是多态

  目录

  一、继承特点

  1.什么是继承?

  2.继承中子类和超类的概念

  3.继承的作用

  二。基本方法

  1.检查继承的父class _bases_

  2.方法的复制

  3.super(父类)

  6.__init__方法

  7.派生属性

  三。多重遗传

  格式

  继承原则(钻石继承)

  四。抽象类

  1.定义抽象类

  2.定义抽象方法

  一、传承特点1。什么是继承?继承是类之间的父子关系。子类可以拥有父类的静态属性和方法。

  【继承意味着你可以在另一个类中获得静态属性和公共方法。(并非所有成员)]

  在python中,新创建的类可以继承一个或多个父类,可以称为基类或超类,新创建的类称为派生类或子类。

  注意:python中的继承分为单继承和多继承。

  2.继承中的子类和父类的概念父类:用于继承的类,称为父类,也称为基类,或超类。

  子类:继承其他类的类,称为子类,也称为派生类。

  3.继承的作用是提高代码复用率。

  继承的简单例子

  二。基本方法1。检查继承的父class _bases_ Note:

  (1)在。python 3,如果一个类不继承任何类,默认继承object类。我们称这个班级为新班级。

  (2).对象类是python的祖先,所有的类都继承自对象类。

  2.方法的复制子类定义了与父类相同的方法。我们称之为一种方法的复制(派生方法)。当实例调用此方法时,它将调用自己的类中的方法。

  我们再举一个例子。

  3.super(父类)子类拥有与父类相同的方法,如果子类希望调用与父类相同的方法。可以使用super()方法。

  在python3中,当子类执行父类时,超级方法super()-也可以直接使用。

  默认情况下,Super省略了两个参数。第一个参数是类名,第二个参数是self。两个参数可以省略不传递,比如super(Student,self)。

  Super()也可以从类外部使用。它需要传递类名(这个类的名称)和对象名。

  例如超级(学生,学生)

  格式:

  父类名,方法名(self)或super(),方法名()或super(类名,对象名)。

  例如:

  6._ _ init _ _ method-子类继承父类。如果子类不再编写父类的__init__()方法,

  创建子类对象时,会自动调用父类__init__()方法。

  -子类继承父类。如果子类检查父类的__init__()方法,

  当创建的子类对象时,将不会再次调用父类的__init__()方法。

  -注意:当需要查看父类的__init__()方法时,python需要调用父类的_ _ init _ _()方法。

  因为存在隐患,比如父类的初始化方法有参数,子类的初始化没有参数,子类再调用父类。

  7.派生属性的覆盖(derived attributes):子类也可以添加自己的新属性或者在自身中重新定义这些属性(不影响父类)。需要注意的是,一旦自己的属性被重新定义,并且与父类同名,那么在调用新添加的属性时,就会以自己的为准(override of attributes)。

  3.多重继承一个子类可以继承多个父类,也就是多重继承,拥有所有父类的属性和方法。比如,一个孩子会遗传他父亲和母亲的特征。格式化子类名称(父类名1,父类名2…):通过

  当我们同时继承两个父类时:

  基本上,当我们继承同一个父方法时,系统应该如何选择?

  我们先来看一个方法。

  这样,当继承的类中的方法相同时,我们知道我们继承了谁。

  我们应该尽量避免这种多重继承的发生,即多个继承的类有相同的函数或变量名。

  继承原理(钻石继承)python到底是怎么实现继承的?对于您定义的每个类,Python将计算一个方法解析顺序(MRO)列表。这个MRO列表是所有基类的简单线性顺序列表,例如

  为了实现继承,python将在MRO列表中从左到右搜索基类,直到找到匹配该属性的第一个类。

  MRO列表是通过C3线性化算法构建的。这个算法的数学原理我们就不深究了。它实际上是合并所有父类的MRO列表,并遵循以下三个准则:

  1.子类将在父类之前被检查。

  2.将根据列表中的顺序检查多个父类

  3.如果下一个类有两个合法的选择,选择第一个父类。

  这样和我们的逻辑思维是不太同的

  我们来举个例子

  四。抽象类在我们定义Person类和实现eat()和drink()方法之前,

  每个人都会在不同的地方吃喝,如果方法实现了就浪费了。因此,我们只能定义eat()方法,而不能实现方法体。在这种形式下,我们可以将方法定义为抽象方法,具有抽象方法的类称为抽象类。

  抽象类是一个特殊的类,只能继承,不能实例化。抽象类中可以有抽象方法和普通方法。

  1.定义抽象类。定义抽象类需要导入abc模块。从abc导入ABCMeta,abstractmethod

  2.定义抽象方法。抽象方法:只定义方法,不具体实现方法体。

  定义抽象方法时,需要在前面加上:@abstractmethod。

  抽象方法不包含任何可实现的代码,所以其函数体通常使用pass。

  注意:子类继承了抽象类父类,子类必须实现父类的抽象方法。

  当你拥有它的时候。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: