python中的类继承(16)

1.继承的语法

class 类名(父类名):
	类内容体

继承分为:单继承和多继承

1.1 单继承代码演示

"""
演示面向对象,继承的基础语法
"""

# 演示单继承

class phone:
    IMEI = None     # 序列号
    producer = "HM" # 厂商

    def call_by_4g(self):
        print("4g通话")

class phone2022(phone):
    face_id = "10001"   # 面部识别ID

    def call_by_5g(self):
        print("2022年新功能:5g通话")


phone1 = phone2022()
print(phone.producer)
phone1.call_by_5g()
phone1.call_by_4g()

2.2 多继承演示

注意:多继承时,同名的变量,以继承列表左边先出现的为准,先继承的优先级高于后继承的

"""
演示面向对象,继承的基础语法
"""

# 演示多继承

class phone:
    IMEI = None     # 序列号
    producer = "ITCAST" # 厂商

    def call_by_4g(self):
        print("4g通话")

class phone2022(phone):
    face_id = "10001"   # 面部识别ID

    def call_by_5g(self):
        print("2022年新功能:5g通话")

class NFCReader:
    nfc_type = "第五代"
    producer = "HM" # 厂商

    def read_card(self):
        print("NFC读卡")

    def write_card(self):
        print("NFC写卡")

class RemoteControl:
    rc_type = "红外遥控"

    def control(self):
        print("红外遥控开启")
class MyPhone(phone,NFCReader,RemoteControl):
    pass    # 用来补全语法,这里不需要添加新功能,写上这句只是为了避免语法错误

phone2 = MyPhone()
phone2.call_by_4g()
phone2.read_card()
phone2.write_card()
phone2.control()

# 这里是phone里的厂商,而不是NFCReader里的
# 多继承时,同名的变量,以继承列表左边先出现的为准
print(phone2.producer)  # 结果:ITCAST

2.复写和使用父类成员

2.1复写父类成员的语法

复写:子类继承父类的成员属性和成员方法后,如果对其“不满意”,那么可以进行复写。
即:在子类中重新定义同名的属性或方法即可。

  • 代码示例:
class Phone:
    IMEI = None
    producer = "ITCAST" # 厂商

    def call_by_5g(self):
        print("使用5g网络进行通话")


# 定义子类,复写父类成员
class MyPhone(Phone):
    producer = "CHINA"  # 复写父类的成员属性

    def call_by_5g(self):
        print("开启CPU单核模式,确保通话的时候省电")
        print("使用5g网络进行通话")
        print("关闭CPU单核模式,确保性能")

phone = MyPhone()
phone.call_by_5g()
print(phone.producer)

输出结果:

开启CPU单核模式,确保通话的时候省电
使用5g网络进行通话
关闭CPU单核模式,确保性能
CHINA

2.2在子类中调用父类成员

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

  • 方式1:

  • 调用父类成员

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

  • 方式2:

  • 使用super()调用父类成员
    使用成员变量:super().成员变量
    使用成员方法: super().成员方法()

  • 代码演示:

class Phone:
    IMEI = None
    producer = "ITCAST" # 厂商

    def call_by_5g(self):
        print("使用5g网络进行通话")


# 定义子类,复写父类成员
class MyPhone(Phone):
    producer = "CHINA"  # 复写父类的成员属性

    def call_by_5g(self):
        # 调用父类成员
        # 方式1
        print(f"父类的厂商是:{Phone.producer}")
        Phone.call_by_5g(self)

        # 方法2:
        print(f"父类的厂商是:{super().producer}") 
        # 用super()方法不需要传self了
        super().call_by_5g()

phone = MyPhone()
phone.call_by_5g()
print(phone.producer)

输出结果:

父类的厂商是:ITCAST
使用5g网络进行通话
父类的厂商是:ITCAST
使用5g网络进行通话

注意:只可以在子类内部调用父类的同名成员,子类的实体对象调用默认是调用子类复写的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值