day29 Pyhton 面向对象 继承进阶

本文深入探讨Python中的继承机制,包括单继承和多继承,以及如何使用super()调用父类方法。此外,还详细介绍了抽象类的概念,解释了如何通过抽象类约束子类实现特定方法,以及接口类的设计原则。

一.内容回顾

  初识继承

    父类\基类\超类

    子类\派生类

    派生 :派生方法.派生属性

    单继承

      继承的语法class子类名(父类名)

      解决开发中代码冗余的问题

      子类继承了父类之后,可以调用父类中的方法

      如果子类的对象调用某个方法:对象/自己类/父类

      如果子类的对象调用的某个方法父子类中都有:

        正常情况下是用自己的

        想用父类的:

          super().方法名()

          父类名.方法名(self)

      继承表达的是两个类之间 父类子类的关系

二.今日内容

    抽象类:规则

      约束了所有继承这个抽象类的子类必须实现某些同名方法

# from abc import ABCMeta,abstractmethod
# class Abstract(metaclass=ABCMeta):   # metaclass 元类
#     @abstractmethod
#     def func_name(self):
#         print('继承Abstract的子类中必须有一个func_name的方法')
# class Son(Abstract):
#     def func_name(self):
#         print('继承了Abstract就必须写一个func_name方法')

    接口类(对多个抽象类的多继承)    

# class Abstract1(metaclass=ABCMeta):   # metaclass 元类
#     @abstractmethod
#     def wahaha(self):
#         print('继承Abstract1的子类中必须有一个wahaha的方法')
# class Abstract2(metaclass=ABCMeta):   # metaclass 元类
#     @abstractmethod
#     def qqxing(self):
#         print('继承Abstract2的子类中必须有一个qqxing的方法')
# class Son(Abstract1,Abstract2):
#     def wahaha(self):
#         print('继承Abstract1的子类中必须有一个wahaha的方法')
#     def qqxing(self):
#         print('继承Abstract2的子类中必须有一个qqxing的方法')
# 归一化设计
# class Student:
#     def login(self):pass
# class Teacher:
#     def login(self):pass
# def login(obj):
#     obj.login()
# a = Student()
# a.login()
# b = Teacher()
# b.login()
# c3算法
# 求某一类在多继承中的继承顺序:
# 类的mro== [类] + [父类的继承顺序] + [父类2的继承顺序]....
# 如果从左到右的第一个类在后面的顺序中都没出现,那么就提出来到mro顺序中
# [ABCD] + [EO]   -->  A = [BCD] + [EO]
# 如果从左到右的第一个类在后面的顺序中出现,且在后面的顺序中也是第一位,那么就提出来到mro顺序中
# [ABCD] + [AEO]  -->  A =  [BCD] + [EO]
# 如果从左到右的第一个类在后面的顺序中出现,但不是在第一位,那么应该继续往后找,找到符合规则的项目
# [ABCD] + [EAO]  --> E = [ABCD] + [AO]
# [ABCD] + [EAO] + [GEO]  --> G = [ABCD] + [EAO] + [EO]
# [ABCD] + [EAO] + [EO]  --> GE = [ABCD] + [AO] + [O]
# 关键结论:
    # 这个类没有发生继承,他的顺序永远是[类O]
    # 只要是单继承,不是多继承,那么mro顺序就是从子类到父类的顺序

 

转载于:https://www.cnblogs.com/pythonz/p/10007447.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值