面向对象2--继承与派生

1>继承的概念

    引入:先定义了一个类A,然后又想新建立另外一个类B,但是类B的大部分内容与类A是相同的,

    我们不可能从新再写一个类B,这就用到了类的继承的概念。

    通过继承的方式新建类B,让B继承A,B会‘遗传’A的所有属性(数据属性和函数属性),

    概念:继承是指类与类之间的关系,是一种创建新类的方式,新建的类可以继承一个或多个父类(也叫基类或者超类),

    新建的类叫子类或者派生类。继承的功能之一就是用来解决代码重用的问题

    

    如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,它提供了一些常见方法

   (如__str__)的实现。


2>抽象的概念

    抽取对象或者类之间比较相似的部分,它的主要作用是划分类别,抽象只是分析的过程中得到类的一个动作。先经历抽象

    这个过程,才能通过继承的方式去表达出抽象的结构。

    如,人,狗,猫可以抽象出动物,花草,树木可以抽象出植物,动物和植物可以抽象出生物,类似这些。


3>代码重用

    用已经有的类建立一个新的类,这样就重用了已经有的软件中的一部分设置大部分,大大节省了编程工作量,这就是常说

    的代码重用,不仅可以重用自己的类,也可以继承别人的,比如标准库,来定制新的数据类型。

    

    


4>属性查找顺序(单继承)

    python中有单继承 和多继承

    属性(类包含数据属性和函数属性)查找顺序:对象自身(应该就是__init__下面的数据)-->类(找不到就找对应的类的)

    -->父类(再找不到就往父类这样层级往上找,找不到则抛出异常)

    注意下面这种的情况,谨记:谁调用函数,谁就是self,再按属性查找顺序推导。

    


5>派生

    子类添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类)成为派生,若重新定义的属性与父类重名,

    那下次调用该属性时,优先调取自己的,即遵循上面说的 属性查找顺序。

    


6>属性查找顺序(多继承)---广度优先

    



7>子类中调用父类属性

    7.1:父类名。父类方法

    

    7.2:super()----注意区分跟上面的写法

    

    7.3 区别:类.方法 不依赖继承关系,因为这种方式可以调用任何类下的方法

                    super依赖继承关系,并且会按mro()方式依次查找属性

     

    


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值