温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在Python中实现类的继承

发布时间:2021-05-31 18:23:10 来源:亿速云 阅读:328 作者:Leah 栏目:开发技术

如何在Python中实现类的继承?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、继承的格式

类的继承格式如下,括号中的为父类名。

class 类名(父类名):
 代码

二、单继承

下面我们让Man继承自Master类,并调用继承的showSkill方法。

class Master():
    def __init__(self):
        self.skill='炒菜'
    def showSkill(self):
        print(self.skill)

class Man(Master):
    pass

man=Man()
man.showSkill()

炒菜

三、多继承

我们可以在括号中写入多个父类,并用逗号隔开,就可以表示多继承。
需要注意的是,如果父类中有同名的方法或属性被子类继承,子类优先继承第一个父类的方法。

'''
测试python多继承
多继承时,若父类有同名的属性或方法,则优先继承先继承的父类
'''

class Master():
    def __init__(self):
        self.skill='炒菜'
    def showSkill(self):
        print(self.skill)

class Bagger():
    def __init__(self):
        self.skill='乞讨'
    def showSkill(self):
        print(self.skill)

class Man(Master,Bagger):
    pass

man=Man()
man.showSkill()

炒菜

四、重写父类方法

python中重写父类方法不需要override等任何的关键字,直接把原来的方法重写一遍就好。

class Master():
    def __init__(self):
        self.skill='炒菜'
        print("Master初始化完毕")
    def showSkill(self):
        print(self.skill)

class Bagger():
    def __init__(self):
        self.skill='乞讨'
        print("Bagger初始化完毕")
    def showSkill(self):
        print(self.skill)

#重写父类的方法
class Man(Master,Bagger):
    #重写__init__方法时,并不会调用父类的__init方法
    def __init__(self):
        #重写父类的属性skill
        self.skill='飞天'
    def showSkill(self):
        print("我的技能是:"+self.skill)

man=Man()
man.showSkill()

我的技能是:飞天

五、打印继承关系

通过__mro__()方法我们可以得到当前类继承的所有类。

class Master():
    def __init__(self):
        self.skill='炒菜'
    def showSkill(self):
        print(self.skill)

class Bagger(Master):
    pass

class Man(Bagger):
    pass

man=Man()
print(Man.__mro__)

六、调用父类方法

我们可以通过super().方法名,来调用父类中的 方法,哪怕该方法在子类中被重写了。

class Master():
    def __init__(self):
        self.skill='炒菜'
    def showSkill(self):
        print(self.skill)

class Man(Master):
    def __init__(self):
        self.skill='吃饭'
    def showSkill(self):
        print(self.skill)
        super().__init__()
        super().showSkill()

man=Man()
man.showSkill()

吃饭
炒菜

七、私有属性与方法

我们可以在方法或属性名前加上 __ 来表示私有,在类的继承中,只有父类的私有方法无法被继承,其他属性与方法都将被继承,但私有属性不能在子类中直接访问,但我们可以同过继承的父类公有方法来对其访问。
下面我们定义私有属性money,并创建共有方法set_money与get_money从子类中对其进行访问。

class Master():
    #在属性或方法面前加__,表示访问权限为私有
    __money=100000
    def __init__(self):
        pass
    #设置为私有方法,无法被继承
    def __showMoney(self):
        print(self.__money)
    #使子类可以通过共有方法访问私有属性
    def get_money(self):
        return self.__money
    def set_money(self,money):
        self.__money=money

class Man(Master):
    pass

man=Man()
print("原来的money:"+man.get_money().__str__())
man.set_money(12)
print("后来的money:"+man.get_money().__str__())


看完上述内容,你们掌握如何在Python中实现类的继承的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI