继承介绍以及单继承

程序中的继承

在程序中,继承描述的是多个类之间的所属关系。

如果一个类A里面的属性和方法可以复用,则可以通过继承的方式,传递到类B里。

那么类A就是基类,也叫做父类;类B就是派生类,也叫做子类。

# 父类
class A(object):
    def __init__(self):
        self.num = 10
    def print_num(self):
        print(self.num+10)
# 子类
class B(A):
    pass
 
b = B()
print(b.num)
b.print_num()

单继承:子类只能继承一个父类

情节:煎饼果子老师傅在煎饼果子界摸爬滚打几十年,拥有一身精湛的煎饼果子技术,并总结了一套"古法煎饼果子配方"。

可是老师傅年迈已久,在嗝屁之前希望把自己的配方传承下去,于是老师傅把配方传给他的徒弟大猫...

class Master(object):
    def __init__(self):
        self.kongfu = "古法煎饼果子配方"
 
    def make_cake(self):
        print("按照<%s>制作一份将饼果子..."% self.kongfu)
 
class Prentice(Master):
    pass
laoli = Master()
print(laoli.kongfu)
laoli.make_cake()
print("*"*40)
daoma = Prentice()
print(daoma.kongfu)
daoma.make_cake()

单继承:

说明:

虽然子类没有定义__init__方法初始化属性,也没有定义实例方法,但是父类有。所以只要创建子类的对象,就默认执行了那个继承过来的__init__方法

总结:

子类在继承的时候,在定义类时,小括号()中为父类的名字

父类的属性、方法,会被继承给子类

剧情发展:

大猫掌握了师傅的配方,可以制作古法煎饼果子。但是大猫是个爱学习的好孩子,他希望学到更多的煎饼果子的做法,于是通过百度搜索,找到了一家煎饼果子培训学校。(多继承)

说明:

多继承可以继承多个父类,也继承了所有父类的属性和方法

注意:如果多个父类中有同名的 属性和方法,则默认使用第一个父类的属性和方法(根据类的魔法属性mro的顺序来查找)

多个父类中,不重名的属性和方法,不会有任何影响。

class Master(object):
    def __init__(self):
        self.kongfu = "古法煎饼果子配方"
 
    def make_cake(self):
        print("[古法]按照<%s>制作一份将饼果子..."% self.kongfu)
 
    def dayandai(self):
        print("师傅的大烟袋")
class School(object):
    def __init__(self):
        self.kongfu = "现代煎饼果子配方"
 
    def make_cake(self):
        print("[现代]按照<%s>制作一份将饼果子..."% self.kongfu)
 
    def xiaoyandai(self):
        print("学校的小烟袋")
 
class Prentice(School,Master):
    pass
damao = Prentice()
print(damao.kongfu)
print(Prentice.__mro__)
damao.make_cake()
damao.dayandai()
damao.xiaoyandai()

剧情发展:

大猫掌握了 师傅的配方 和 学校的配方,通过研究,大猫在两个配方的基础上,创建了一种全新的煎饼果子配方,称之为 "猫氏煎饼果子配方"。(子类重写父类同名属性和方法)

class Master(object):
    def __init__(self):
        self.kongfu = "古法煎饼果子配方"
 
    def make_cake(self):
        print("[古法]按照<%s>制作一份将饼果子..."% self.kongfu)
class School(object):
    def __init__(self):
        self.kongfu = "现代煎饼果子配方"
 
    def make_cake(self):
        print("[现代]按照<%s>制作一份将饼果子..."% self.kongfu)
 
class Prentice(School,Master):
        def __init__(self):
            self.kongfu="猫氏煎饼果子配方"
        def make_cake(self):
            print("[猫氏]按照<%s>制作一份将饼果子..." % self.kongfu)
 
damao = Prentice()
print(damao.kongfu)
damao.make_cake()
print(Prentice.__mro__)

剧情发展:

大猫的新配方大受欢迎,但是有些顾客希望也能吃到古法配方和 现代配方 的煎饼果子...(子类调用父类的同名属性和方法)

答案:

子类调用父类同名属性和方法

子类调用父类同名属性和方法

核心点:

无论何时何地,self都表示是子类的对象。在调用父类方法时,通过传递self参数,来控制方法和属性的访问修改。

剧情发展:

大猫的煎饼果子店非常红火,终于有一天,他成了世界首富!!

但是他也老了,所以他希望把 师傅的配方 和 学校的配方 以及自己的配方 继续传承下去...(多层继承)

调用父类方法super()

python面向对象二相关推荐

  1. Python面向对象二 封装与修饰器

    Python面向对象二 封装与修饰器 1. 特殊方法 2. 封装 2.1 封装的引入 2.2 封装实例一 2.3 封装实例二 3. property装饰器 1. 特殊方法 • 在类中可以定义一些特殊方 ...

  2. 第八课.Python面向对象(二)

    类的继承和多态 继承和多态与函数有共同的目的,都是为了减少代码的冗余,提高复用的效率: 根据"Python面向对象(一)"的笔记,我现在定义一个Cinema类: #父类 class ...

  3. Python 面向对象(二)

    Python 的面向对象和其他语言不一样,python的class术语与c++有一定区别,与 Modula-3更像. 1 设计面向对象 设计分成下面的两个方面,一定要先设计,找好对象,找类 1 面向对 ...

  4. Python面向对象二(第十二讲)

    文章目录 知识点 1.私有属性与私有方法 1.私有属性 2.私有方法 2.成员 3.实例属性 1.类属性(静态属性) 2.属性总结 4.实例方法 5.类方法 6.静态方法 7.封装介绍 8.继承(重点 ...

  5. Python 面向对象(二)类的继承

    class people:#定义基本属性name = ''age = 0#定义私有属性,私有属性在类外部无法直接进行访问__weight = 0#定义构造方法def __init__(self,n,a ...

  6. python 面向对象二

    为什么80%的码农都做不了架构师?>>>    私有字段 ( filed) 不想被外部访问或不想暴露给外部的内容,可以定义一个 私有字段 self.__xxx 私有字段不能被 对象和 ...

  7. Python 面向对象二(转载)

    来源:www.cnblogs.com/wupeiqi/p/4766801.html 三.类成员的修饰符 类的所有成员在上一步骤中已经做了详细的介绍,对于每一个类的成员而言都有两种形式: 1.公有成员, ...

  8. Python面向对象之二:面向对象基础

    Python面向对象之二:面向对象基础 一.面向对象介绍 通过一个例子引入对面向对象思想的理解: 假设自己是如来佛祖,想找四个人去西天取经,于是便找了四个人,但是这四个人没有明显的长相特点,于是就给一 ...

  9. 十二. python面向对象主动调用其他类

    一 .python面向对象主动调用其他类成员 (看代码) 主动调用 其他类的成员# 没有继承 的主动调用 class Grad(object):bar=555555def __init__(self, ...

最新文章

  1. 计算机算法设计与分析二--分治
  2. rop检查_注意!这几类人一定要定期检查眼底!
  3. 人工智能未来读后感 ----by RayKurzweil
  4. 图像缩放算法_opencv缩放算法
  5. 被动模式下FTP不能建立数据会话问题
  6. 计算机二级考试开考多久能出来,【计算机二级】明天就要开考了,你们准备好了吗?...
  7. html遮罩层模态提示,页面遮罩层,并且阻止页面body滚动。bootstrap模态框原理,.bootstrap模态...
  8. pytorch1.7教程实验——对抗示例生成FGSM
  9. linux下ts转mp4,ffmpeg安装及实现视频格式的转换、分片(ts m3u8)
  10. 好酷啊,真是图片吗?
  11. Reflect Refract (以水渲染为例)
  12. 从Model1,Medel2到显示层框架的出现
  13. QGIS Server安装教程
  14. 数据仓库--事实表和维度表
  15. wsimport 用法详解
  16. 软件人员kpi制定模板_软件部门绩效考核表
  17. UVA 12307 旋转卡壳
  18. Task 4 用户输入->知识库的查询语句
  19. octomap(1):octomap_server报错MessageFilter [target=odom_combined ]: Dropped 100.00% of messages so far
  20. 杨辉三角形延伸(菱形)

热门文章

  1. CAD电气工程图教程之电气图的图形符号与文字符号
  2. DLNA」的介紹與應用
  3. IP地址与二进制的转换
  4. 【CICC原创】面向全域作战态势感知的战场全息地图
  5. 空三加密matlab,剖析空三的意义及航天远景空三加密流程
  6. Smart3d五镜头空三失败问题解决
  7. java面向对象编程 视频_Java8之面向对象编程视频教程
  8. 管理信息系统期末复习资料
  9. 思科(Netacad)账号注册教学,完美解决登录时找不到该账号的问题,亲身实测可用。最新最详细
  10. 专业函数绘图软件Origin 7.5中文版