栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

自动化软件测试 -- Python 继承

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

自动化软件测试 -- Python 继承

一、单继承:子类只继承一个父类
class Master(object):
    def __init__(self):
        self.kongfu = "古法煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

shifu = Master()
shifu.make_cake()        # 使用了古法煎饼果子配方,制作了一个煎饼果子

class Damao(Master):
    pass

damao = Damao()
damao.make_cake()       # 使用了古法煎饼果子配方,制作了一个煎饼果子

虽然子类没有定义__init__ 方法初始化属性,也没有定义实例方法,但是父类有。所以只要创建子类的对象,就默认执行了那个继承过来的 __init__ 方法。子类在继承的时候,在定义类时,()中为父类的名字。父类的属性、方法,都会被继承给子类。

二、多继承:子类继承多个父类
class Master(object):
    def __init__(self):
        self.kongfu = "古法煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def dayandai(self):
        print("抽了一个大烟袋")


class School(object):
    def __init__(self):
        self.kongfu = "现代煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def play_game(self):
        print("打了一把5杀")


# shifu = Master()
# shifu.make_cake()

class Damao(Master,School):
    pass

damao = Damao()
damao.make_cake()        #使用了古法煎饼果子配方,制作了一个煎饼果子
damao.dayandai()         #抽了一个大烟袋
damao.play_game()        #打了一把5杀

class Damao(School,Master):
    pass
damao = Damao()
damao.make_cake()       #使用了现代煎饼果子配方,制作了一个煎饼果子

多继承可以继承多个父类,也继承了所有父类的属性和方法。注意:如果多个父类中有同名的属性和方法,则默认使用第一个父类的属性和方法(根据类的魔法属性mro的顺序来查找)。多个父类中,不重名的属性和方法,不会有任何影响。

三、子类重写父类同名属性和方法
class Master(object):
    def __init__(self):
        self.kongfu = "古法煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def dayandai(self):
        print("抽了一个大烟袋")


class School(object):
    def __init__(self):
        self.kongfu = "现代煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def play_game(self):
        print("打了一把5杀")


# shifu = Master()
# shifu.make_cake()

class Damao(Master,School):
    def __init__(self):
        self.kongfu = "猫式煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

damao = Damao()
print(Damao.__mro__)
damao.make_cake()        #使用了猫式煎饼果子配方,制作了一个煎饼果子
damao.dayandai()         #抽了一个大烟袋
damao.play_game()        #打了一把5杀
四、子类调用父类的同名属性和方法
class Master(object):
    def __init__(self):
        self.kongfu = "古法煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def dayandai(self):
        print("抽了一个大烟袋")


class School(object):
    def __init__(self):
        self.kongfu = "现代煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def play_game(self):
        print("打了一把5杀")


# shifu = Master()
# shifu.make_cake()

class Damao(Master,School):
    def __init__(self):
        self.kongfu = "猫式煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def make_old_cake(self):
        Master.__init__(self)
        self.make_cake()

    def make_moder_cake(self):
        School.__init__(self)
        self.make_cake()

damao = Damao()
print(Damao.__mro__)
damao.make_cake()        #使用了猫式煎饼果子配方,制作了一个煎饼果子
damao.make_old_cake()         #使用了古法煎饼果子配方,制作了一个煎饼果子
damao.make_moder_cake()        #使用了现代煎饼果子配方,制作了一个煎饼果子
五、多层继承
class Master(object):
    def __init__(self):
        self.kongfu = "古法煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def dayandai(self):
        print("抽了一个大烟袋")


class School(object):
    def __init__(self):
        self.kongfu = "现代煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def play_game(self):
        print("打了一把5杀")


# shifu = Master()
# shifu.make_cake()

class Damao(Master,School):
    def __init__(self):
        self.kongfu = "猫式煎饼果子配方"

    def make_cake(self):
        print(f"使用了{self.kongfu},制作了一个煎饼果子")

    def make_old_cake(self):
        Master.__init__(self)
        self.make_cake()

    def make_moder_cake(self):
        School.__init__(self)
        self.make_cake()

class PreticePrentice(Damao):
    pass

pp = PreticePrentice()

pp.make_cake()               #使用了猫式煎饼果子配方,制作了一个煎饼果子
pp.make_old_cake()          #使用了古法煎饼果子配方,制作了一个煎饼果子
pp.make_moder_cake()          #使用了现代煎饼果子配方,制作了一个煎饼果子
六、super 

使用super()可以逐一调用所有的父类方法,并且只执行一次,调用顺序遵循mro类属性的顺序。

目前,super()不支持执行多个父类的同名方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/858599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号