最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 什么是python继承?如何掌握?

    正文概述    2020-03-04   193

    关于python的继承类别有很多,分成继承和多继承,使用上并不复杂,也常常作为项目使用,因此,掌握这部分内容非常重要,一起来看下吧~

    继承的语法

    Python子类继承父类的语法是在定义子类时,将多个父类放在子类之后的圆括号里。语法格式如下:

    class 子类名称(父类1,父类2,...):
    # 类的定义部分

    如果在Python中定义一个类时未指定这个类的直接父类,则这个类默认继承object类。因此,object类是所有类的父类,要么是其直接父类,要么是其间接父类。

    实现继承的类被称为子类,被继承的类被称为父类,也被称为基类、超类。父类和子类的关系,是一般和特殊的关系,是抽象和具体的关系。从子类角度来看,子类扩展了父类的功能。从父类角度来看,父类派生出了子类。

    class People:
        # 定义类的基本属性
        name = ''
        age = ''
        # 定义类的私有属性
        __weight = 0
     
        # 定义类的构造方法
        def __init__(self, name, age, weight):
            self.name = name
            self.age = age
            self.__weight = weight
        # 定义成员方法
        def say(self):
            print(f'{self.name}说我今年{self.age}岁了')
     
        def walk(self):
            print(f'{self.name}会走路了')
     
    # 定义学生继承自People类
    class Student(People):
        # 定义学生类特有属性grade代表年级
        grade = ''
        # 定义学生类的构造方法
        def __init__(self, name, age, weight, grade):
            # 调用父类构造方法
            People.__init__(self,name, age, weight)
            self.grade = grade
     
        # 覆写父类的方法
        def say(self):
            print(f'{self.name}说我今年{self.age}岁了,我在读{self.grade}年级')
     
        # 定义成员方法
        def study(self):
            print(f'{self.name}说:好好学习,天天向上!')
     
    # 实例化学生类
    s1 = Student('关羽',35, 80,'三年级')
    # 调用say()方法
    s1.say() # 因为重写了父类方法,所以调用的是子类的say()方法
    # 调用walk()方法,因为学生没有walk()方法,但是学生继承了People, 所以会调用父类的walk()方法
    s1.walk()
    # 调用study()方法,因为父类没有study, 子类定义了独有的study方法,会直接调用
    s1.study()

    什么是python继承?如何掌握?

    多继承

    当一个子类有多个直接父类时,该子类会继承得到所有父类的公有的方法。但是,如果直接继承的多个父类中有相同的方法时,Python会按照继承的父类的前后顺序,前面类中的方法会“屏蔽”后面父类中的同名方法。所以,对于子类和直接继承的父类的同名方法查找有顺序是:

    子类 -> 直接子类(类1,类2,类3,...类n) 从左到右搜索,找到了就屏蔽后面的同名方法。

    class Human:
        def __init__(self, name, age, gender, skin):
            self.name = name
            self.age = age
            self.gender = gender
            self.skin = skin
     
        def walk(self):
            print(f'{self.name}正在走路')
     
        def work(self):
            print(f'{self.name}工作了')
    class Man(Human):
        def __init__(self, name, age, gender, skin, hair, mouth):
            Human.__init__(self, name, age, gender,skin)
            self.hair = hair
            self.mouth = mouth
     
        def work(self):
            print(f'我是男人,我要养家糊口')
     
        def game(self):
            print(f'我喜欢打游戏')
     
    class Woman(Human):
        def __init__(self, name, age, gender, skin, hair, mouth):
            Human.__init__(self, name, age, gender, skin)
            self.hair = hair
            self.mouth = mouth
     
        def work(self):
            print(f'我是女人,我也要工作')
     
        def cook(self):
            print(f'我会做饭')
     
     
    class Son(Man, Woman):
        def __init__(self, name, age, gender, skin, hair, mouth, grade):
            Man.__init__(self, name, age, gender,skin,hair,mouth)
            self.grade = grade
     
        def study(self):
            print('好好学习,天天向上')
    # 实例化儿子类
    s1 = Son('司马光',9,'男','白皮肤','黑头发','大嘴','三年级')
    s1.study() # 调用自己独有方法
    s1.work() # 父类Man和Woman都有的方法,从左到右找,找到后后面父类中的同名方法会隐藏
    s1.game() # 父类Man的独有方法,继承过来
    s1.cook() # 父类Woman的独有方法,继承过来
    s1.walk() # 子类,直接父类都没有的方法,从父类的父类间接继承,因此继承具有传递性

    什么是python继承?如何掌握?

    好了,以上就是继承和多继承的使用内容了,如需了解更多python实用知识,点击进入起源地模板网教学中心


    起源地下载网 » 什么是python继承?如何掌握?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元