python笔记之函数继承

在程序中,从设计角度讲,先有子类再有父类

从编码角度讲,先有父类后有子类

多个类型中,有代码的共性,且都属于一个概念

例如:

class Person:
    Def say(self):
        Print(“说话”)

class Teacher(Person):
    Def teach(self):
        Self.say()
        Print(“教学”)

class Student(Person):
    Def study(self):
        print(“学习”)

创建父类对象,只能访问父类成员

p=Person()

p.say()

创建子类对象

t=Teacher()

t.say()

t.teach()

关系判断

isinstance(变量名,类型名)函数

以上例子

本类对象是一种本类类型

子类对象是一种父类类型

issubclass(类型名,类型名)

逻辑与上面函数相同

type(变量名)==类型名

只有本类对象名才会返回true

继承中的数据

1.子类若没有构造函数,直接使用父类

2.子类有构造函数,覆盖父类(好像父类中不存在构造函数)

super()通过父类调用构造函数

super().__init__(父类参数)

任何类都直接或间接继承object类

多继承:拥有多个父类

  

class A:
   def func01(self):
       print("func01")

class B:
   def func02(self):
       print("func02")

class C(B,C):
   def func03(self):
       self.func01()
       self.func02()

优点:最简单的代码复用方式

缺点:增加新类型,必须改变C类代码

class A:
   def func01(self):
       print("A--func01")

class B:
   def func01(self):
       print("B--func01")

class C(B,C):
   def func01(self):
       print("C--func01")
       super().func01()

c=C()
c.func01()

super找到的是A,父类有相同函数名时在继承列表中从左至右查找

无法执行B类中func01()

class A:
   def func01(self):
       print("A--func01")

class B(A):
   def func01(self):
       print("B--func01")
       super().func01()

class C(A):
   def func01(self):
       print("C--func01")
       

class D(B,C):
   def func01(self):
       print("D--func01")
       super().func01()

d=D()
d.func01()

执行顺序为:D->B->C

可以使用print(D.mro())来查看函数调用顺序

Java,c#等新语言都只支持单继承,单继承是重点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值