Python---继承与复写

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

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

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

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

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

方式一:调用父类成员

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

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

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

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

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

单继承例子

# 单继承
class Phone:
    IMEI = None
    producter = "HH"

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


class SonPhone(Phone):
    face_id = "001"

    def call_by_5g(self):
        print("5g")


sonphone = SonPhone()
print(sonphone.producter)
sonphone.call_by_4g()
sonphone.call_by_5g()

多继承例子:

# 多继承
class Phone:
    IMEI = None
    producter = "HH"

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


class NFCReader:
    nfc_type = "第五代"
    producter = "hh"

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

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


class RemoteControl:
    rc_type = "红外遥控"

    def control(self):
        print("红外遥控")


class SonPhone(Phone, NFCReader, RemoteControl):
    pass  # 语法补全不报错

    # face_id = "001"
    #
    # def call_by_5g(self):
    #     print("5g")


sonphone = SonPhone()
print(sonphone.producter)   # Phone中的  优先级:从左到右
sonphone.call_by_4g()
sonphone.read_card()
sonphone.write_card()
sonphone.control()

复写例子:

# 复写---复写父类成员
class Phone:
    IMEI = None
    producter = "HH"  # 复写成员变量

    def call_by_4g(self):   # 复写成员方法
        print("4g")


class SonPhone(Phone):
    producter = "MM"
    face_id = "001"

    def call_by_4g(self):
        print("复写")


sonphone = SonPhone()
print(sonphone.producter)
sonphone.call_by_4g()

复写父类成员:

# 复写父类成员
class Phone:
    IMEI = None
    producter = "HH"

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


class SonPhone(Phone):
    producter = "MM"
    face_id = "001"

    def call_by_4g(self):
        print("复写")
        print("5g")
        print("啦啦啦")

        # 方式一:调用父类成员
        # print(Phone.producter)   # HH
        # Phone.call_by_4g(self)   # 4g

        # 方式二: 使用super() 
        print(super().producter)  # HH
        super().call_by_4g()  # 4g


sonphone = SonPhone()
print(sonphone.producter)  # MM
sonphone.call_by_4g()

你可能感兴趣的:(python)