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

【Python】继承

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

【Python】继承

一、继承的定义 
  • 定义
#父类A
class A():
    def str_info(self):
        print("这是一个父类")
#子类B
class B(A):
    pass
#创建对象
result = B()
result.str_info()
#这是一个父类
二、多继承
  • 定义
#父类A
class A():
    def str_info(self):
        print("这是一个父类A")
#父类B
class B():
    def str_info1(self):
        print("这是一个父类B")
#子类C
class C(A, B):
    pass
#创建对象
result = C()
result.str_info()#这是一个父类A
result.str_info1()#这是一个父类B

注意:子类会优先继承A。

二、子类重写父类同名方法和属性
#父类A
class A():
    def str_info(self):
        print("这是一个父类")
#子类B
class B(A):
    #重写父类方法
    def str_info(self):
        print("子类重写父类方法")
#创建对象
result = B()
result.str_info()
#子类重写父类方法

三、mor顺序
  • __mor__:看查看该类继承了哪些父类。
#父类A
class A():
    def str_info(self):
        print("这是一个父类")
#子类B
class B(A):
    pass
result = B()
#查看
print(B.__mro__)

输出结果:


四、子类调用父类的同名方法和属性
#父类A
class A():
    def __init__(self):
        self.num=1
    def str_info(self):
        print(f"这是一个父类{self.num}")
#父类C
class C():
    def __init__(self):
        self.num=2
    def str_info(self):
        print(f'这是一个父类{self.num}')
#子类B
class B(A, C):
    def __init__(self):
        self.num = 3
    #调用父类方法,但是为保证调用到的也是父类的属性,必须在调用方法前调用父亲的初始化
    def getA(self):
        A.__init__(self)
        A.str_info(self)
    def getC(self):
        C.__init__(self)
        C.str_info(self)
result = B()
result.getA()#这是一个父类1
result.getC()#这是一个父类2

五、多层继承
#父类A
class A():
    def str_info(self):
        print("这是一个父类A")
#父类B
class B():
    def str_info1(self):
        print("这是一个父类B")
#子类C
class C(A, B):
    def str_info1(self):
        print("这是一个父类B")
#孙类D
class D(C):
    pass
#创建对象
result = D()
result.str_info()#这是一个父类A
result.str_info1()#这是一个父类B
六、super()调用父类方法
#父类A
class A():
    def str_info1(self):
        print("这是一个父类A")
#父类B
class B():
    def str_info1(self):
        print("这是一个父类B")
#子类C
class C(B, A):
    def str_info1(self):
        print("这是一个子类C")
    def father(self):
        super(C, self).str_info1()#写法一
        super().str_info1()#写法二
#创建对象
result = C()
result.father()

super()调用父类的优先级是子类括号里父类的排列顺序。


七、私有权限

对象不能访问私有属性和私有方法。

  • 定义
class A():
    #私有属性
    def __init__(self):
        self.__money = 200000
    #私有方法
    def __str_info1(self):
        print("这是一个父类A")
  • 获取和修改
class A():
    # 私有属性
    def __init__(self):
        self.__money = 200000
    # 定义获取私有属性值的函数
    def get_prv(self):
        return self.__money
    #定义修改私有属性值的函数
    def set_prv(self, money):
        self.__money = money
s1 = A()
s1.set_prv(5000)
print(s1.get_prv())
        

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

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

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