• Python---继承与复写


    单继承语法: 一个子类继承一个父类
    class 类名(父类名):
        类内容体

    多继承语法: 一个子类继承多个父类------优先级:从左到右

    class 类名(父类名1,父类名2,父类名2....父类名n):
        类内容体

    复写:子类复写父类成员方法,在子类中重新定义同名的属性或方法

    子类中调用父类同名成员: 一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员,如果需要使用被复写的父类的成员,就需要特殊的调用方式:

    方式一:调用父类成员

    使用成员变量:父类名.成员变量

    使用成员方法:父类名.成员方法(self)

    方式二:使用super()调用父类成员

    使用成员变量:super().成员变量

    使用成员方法:super().成员方法()

    单继承例子

    1. # 单继承
    2. class Phone:
    3. IMEI = None
    4. producter = "HH"
    5. def call_by_4g(self):
    6. print("4g")
    7. class SonPhone(Phone):
    8. face_id = "001"
    9. def call_by_5g(self):
    10. print("5g")
    11. sonphone = SonPhone()
    12. print(sonphone.producter)
    13. sonphone.call_by_4g()
    14. sonphone.call_by_5g()

    多继承例子:

    1. # 多继承
    2. class Phone:
    3. IMEI = None
    4. producter = "HH"
    5. def call_by_4g(self):
    6. print("4g")
    7. class NFCReader:
    8. nfc_type = "第五代"
    9. producter = "hh"
    10. def read_card(self):
    11. print("NFC读卡")
    12. def write_card(self):
    13. print("NFC写卡")
    14. class RemoteControl:
    15. rc_type = "红外遥控"
    16. def control(self):
    17. print("红外遥控")
    18. class SonPhone(Phone, NFCReader, RemoteControl):
    19. pass # 语法补全不报错
    20. # face_id = "001"
    21. #
    22. # def call_by_5g(self):
    23. # print("5g")
    24. sonphone = SonPhone()
    25. print(sonphone.producter) # Phone中的 优先级:从左到右
    26. sonphone.call_by_4g()
    27. sonphone.read_card()
    28. sonphone.write_card()
    29. sonphone.control()

    复写例子:

    1. # 复写---复写父类成员
    2. class Phone:
    3. IMEI = None
    4. producter = "HH" # 复写成员变量
    5. def call_by_4g(self): # 复写成员方法
    6. print("4g")
    7. class SonPhone(Phone):
    8. producter = "MM"
    9. face_id = "001"
    10. def call_by_4g(self):
    11. print("复写")
    12. sonphone = SonPhone()
    13. print(sonphone.producter)
    14. sonphone.call_by_4g()

    复写父类成员:

    1. # 复写父类成员
    2. class Phone:
    3. IMEI = None
    4. producter = "HH"
    5. def call_by_4g(self):
    6. print("4g")
    7. class SonPhone(Phone):
    8. producter = "MM"
    9. face_id = "001"
    10. def call_by_4g(self):
    11. print("复写")
    12. print("5g")
    13. print("啦啦啦")
    14. # 方式一:调用父类成员
    15. # print(Phone.producter) # HH
    16. # Phone.call_by_4g(self) # 4g
    17. # 方式二: 使用super()
    18. print(super().producter) # HH
    19. super().call_by_4g() # 4g
    20. sonphone = SonPhone()
    21. print(sonphone.producter) # MM
    22. sonphone.call_by_4g()

  • 相关阅读:
    Win10 Mysql 8.0.26版本忘记密码后重新修改。
    马斯洛的的五层需求完美吗 不
    buuctf-web-p6 [NPUCTF2020]web 狗
    积分值和面积、对称性
    eureka---各个server的地址配置不全导致服务找不到
    驾驶数字未来:汽车业界数字孪生技术的崭新前景
    Flink内部数据交换源码分析(二)之上游输出以及下游读取过程
    一看就懂:这就是机器学习过程!
    【编程不良人】Dubbo学习笔记01---Dubbo定义、架构演变、Dubbo入门案例
    redis I/O多路复用机制
  • 原文地址:https://blog.csdn.net/weixin_52053631/article/details/133614916