zoukankan      html  css  js  c++  java
  • python 继承

    继承

    在python中

    一个类可以被多个类继承

    一个类也可以继承多个父类

    继承的目的:

    当一个类的一些属性与另一个类中的属性重合,而如果有很多类出现这样的情况,

    就会造成大量的重复代码,为了解决这类问题就用到了继承

    继承的是子类,被继承的父类

    继承的本质是:将一些类中共有的属性挑出来放进一个父类中,所有的子类从这个父类中继承属性

    class Dog:
        def __init__(self,name,master,sex): #比如每只狗都有名字,主人,性别
            self.name = name
            self.master = master
            self.sex = sex
    
    class Husky(Dog):  #在这里写上Husky类继承Dog类
        pass           #这里面布放东西
    gou = Husky('二哈','二狗子','') #在这里实例化一个狗
    print(gou.name)    #依然可以打印出它的名字,主人,性别
    print(gou.master)
    print(gou.sex)

    二哈
    二狗子

    这个就是继承,因为继承一个类,也叫单继承

    子类甚至还能调用父类的方法

    class Dog:
        def __init__(self,name,master,sex): #比如每只狗都有名字,主人,性别
            self.name = name
            self.master = master
            self.sex = sex
        def attack(self):
            print('%s咬人啦'%(self.name))
    class Husky(Dog):  #在这里写上Husky类继承Dog类
        pass           #这里面布放东西
    gou = Husky('二哈','二狗子','') #在这里实例化一个狗
    gou.attack()

    二哈咬人啦

    class Dog:
        def __init__(self,name,master,sex): #比如每只狗都有名字,主人,性别
            self.name = name
            self.master = master
            self.sex = sex
        def attack(self):
            print('%s咬人啦'%(self.name))
    class Husky(Dog):  #在这里写上Husky类继承Dog类
        def attack(self):
            print('%s没有咬到人'%(self.name))
    gou = Husky('二哈','二狗子','') #在这里实例化一个狗
    gou.attack()

    二哈没有咬到人

    但是,如果子类中有的方法,就会先用自己的,如果自己没有才会带父类中去找,如果没有找到就会报错

    派生

    class Dog:
        def __init__(self,name,master,sex):
            self.name = name
            self.master = master
            self.sex = sex
    
    class Husky(Dog):
        def __init__(self, name, master, sex,kind): #将自己的属性写在这里
            Dog.__init__(self, name, master, sex)   #将父类的属性写在这里
            self.kind = kind                        #这里只用将自己多的写出来就行了
        def attack(self):
            print('%s没有咬到人'%(self.name))
    gou = Husky('二哈','二狗子','','哈士奇')
    gou.attack()    #这种父类中没有方法叫派生方法
    print(gou.kind) #这种父类中没有的属性叫派生属性

    二哈没有咬到人
    哈士奇

    多继承

    顾名思义,继承多个类,就是多继承

    class Dog1:
        def __init__(self,name,sex,master,kind): #这个类里写姓名性别主人和品种
            self.name = name
            self.sex = sex
            self.master = master
            self.kind = kind
    class Dog2:
        def __init__(self):   #这里什么都不写
            pass
        def attack(self):      #在这里写个方法
            print('哈士奇又要咬人了')
    class Husky(Dog1,Dog2): #这里写Husky类继承了Dog1和Dog2
        pass
    gou = Husky('二哈','','二狗子','哈士奇') #实例化一个gou对象
    print(gou.name)   #打印gou的名字
    gou.attack()      #同时这个对象又调用Dog2中的方法

    二哈
    哈士奇又要咬人了

    总结一下:

    父类中没有的属性 在子类中出现 叫做派生属性

    父类中没有的方法 在子类中出现 叫做派生方法

    只要是子类的对象调用,子类中有的名字 一定用子类的,子类中没有才找父类的,如果父类也没有报错

    如果父类 子类都有 用子类的

      如果还想用父类的,单独调用父类的:

        父类名.方法名 需要自己传self参数

        super().方法名 不需要自己传self

    正常的代码中 单继承 === 减少了代码的重复

    继承表达的是一种 子类是父类的关系

  • 相关阅读:
    LAMP搭建示例
    MySQL主从
    list多字段去重
    mysql按照某一个条件进行分组统计,同时又要保证一个相同字段的数据只统计一次
    sentinel自定义异常处理
    sentinel规则持久化
    zookeeper
    shiro
    iframe之间传递参数
    自定义标签
  • 原文地址:https://www.cnblogs.com/GrandDarkness/p/8318636.html
Copyright © 2011-2022 走看看