python 继承

继承:单继承,多继承
类:经典类,新式类

新式类:凡是继承object类的都是新式类
  • python3x 所有的类都是新式类,因为py3中的类都默认继承object
经典类:不继承object类都是经典类
  • python2x(既有新式类,又有经典类)所有的类默认都不继承object类,所有的类默认都是经典类,你可以让其继承object

单继承:新式类,经典类查询顺序一样
class A:
	def func(self):
		print("IN A")
class B:
	pass
    #def func(self):
        #print("IN B")
        
class C:
     pass
	#def func(self):
		#print("IN C")
		
c1 = C()
c1.func()

在这里插入图片描述

多继承:
  • 新式类:查询顺序遵循广度优先
  • 经典类:查询顺序遵循深度优先
  • 深度优先,广度优先的前提:只能是继承两个类的情况
    多继承的新式类 广度优先:一条路走到倒数第二级,如果其他路能走到终点,则返回走另一条路,如果不能,则走到终点
class A:
    def func(self):
        print('IN A')

class B(A):
    pass
    # def func(self):
    #     print("IN B")

class C(A):
    pass
    # def func(self):
    #     print("IN C")

class D(B):
    pass
    # def func(self):
    #     print("IN C")
class E(C):
    pass
    # def func(self):
    #     print("IN C")
class F(D,E):
    pass
    # def func(self):
    #     print("IN C")
#多继承的经典类:深度优先 : 一条路走到底
# f1 = F()
# f1.func()
print(F.mro()) #查询类的查询顺序

在这里插入图片描述
在这里插入图片描述

广度优先,每个节点有且只走一次


多继承的经典类,会一条路走到底。
继承的优点:

  • 节省代码
  • 规范代码
  • 提高代码的复用性,维护性
    为什么使用继承?
    让类与类之间发生关系
继承关系中执行方法:
  • 只执行父类的方法:子类中不要定义与父类同名的方法
  • 只执行子类的方法:在子类中创建这个方法
  • 既要执行子类的方法,又要执行父类的方法:
    1、父类名.方法名(参数)
    2、super()._init_(name,sex,age) 自动执行父类的__init__,除了self会自动执行
实例:既执行子类方法,又执行父类方法
class Animal:
	def __init__(self,name,sex,age):
		self.name = name
		self.sex = sex
        self.age = age
	def eat(self,a1):
        print("%S吃%s" %(self.name,a1))
        
class Bird(Animal):
	def __init__(self,name,sex,age,wing):
		super().__init__(self,name,sex,age,wing)
		self.wing = wing
	def eat(self,argv):
	    super().eat(argv)
		print("吃虫子")
b1 = Bird('鹦鹉',20,'公','绿翅膀')
b1.eat('金蝉')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值