单继承

  • 在python中 来类中 子类继承了父类 子类就拥有了父类的属性和方法
  • 格式: class 子类名(父类名):
class Prentice(Master):
    pass
  • 单继承 就是只有一个父类

多继承

  • 多继承格式: class 子类名(父类1, 父类2, ...):
class Prentice(Master, School):
    pass
  • 如果子类继承了多个父类 如果父类的方法名相同 那么子类会继承第一个父类方法
  • 如果子类继承了多个父类 如果父类的方法名不同 那么子类会全部继承方法

  • 在使用类创建一个对象的时候就会执行init方法
  • 如果子类实现了init方法 会走自己子类中的init方法
  • 如果子类没有实现init方法 会找继承父类的init方法

  • 为什么子类继承了父类 子类就拥有了父类的属性?
  • 前提是继承了父类的init方法 才使用父类的init 给自己设置属性
  • 先继承方法的 然后继承了父类的属性
  • 如果多个父类有同名的属性和方法,则默认使用第一个父类的属性和方法(根据类的魔法属性mro的顺序来查找)

子类重写父类同名属性和方法

  • 重写: 子类继承了父类 在子类中实现了父类已有的方法或者属性 就叫做重写
  • 子类继承父类 重写父类的方法 做自己特有的事情
class Master(object):

    def __init__(self):
        self.kongfu = "古法配方"
        
class Prentice(Master):
    def __init__(self):
        self.kongfu = "猫氏配方"
  • 子类继承了父类
  • 子类重写了父类的同名的属性和方法
  • 那么子类会使用自己的属性 和 方法

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

  • 格式: 父类名.同名方法名(self)

super()

  • 如果子类继承了父类 子类重写了父类的同名方法 而且子类想调用父类的这个同名方法一共有三种方式
• 01 父类名.父类方法名(self)
• 02 super(子类名, self).父类方法名()
• 03 super().父类方法名()
• 
• 02 和 03 只适用于新式类
• 02 和 03 一般用于单继承 也可以是多继承 但是只能调用第一个父类的方法
• 01 适用于单继承或者多继承都可以