zoukankan      html  css  js  c++  java
  • day23.面向对象之继承

    1.什么是继承            

    继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类

    python中类的继承分为:单继承和多继承

    class A:pass
    
    class B(A):pass
    
    print(A.__bases__)      # object 是最初识的类,没有继承的类则继承object
    print(B.__bases__)
    ###
    (<class 'object'>,)
    (<class '__main__.A'>,)

    2.继承的派生与super的使用        

    class Animal:
        def __init__(self,name,aggr,hp):
            self.name = name
            self.aggr = aggr
            self.hp = hp
        def bite(self):
            self.aggr += 50
    
    class Dog(Animal):
        def __init__(self,name,aggr,hp,kind):
            Animal.__init__(self,name,aggr,hp)  #知识点1: 或者使用
         #super().__init__(name,aggr,hp),在python3中适用。使用super参数可将父类的属性调用给子类
    self.kind = kind # 知识点2:派生属性,父类没有的种类属性,子类有的 def eat(self): # 知识点3:派生方法,父类没有的方法,子类有的方法 self.hp += 100 def bite(self): Animal.bite(self) # 知识点4:此处若想在调用父类原有方法以及增加子类功能。需要调用父类功能。 self.hp += 100 jin = Dog('旺财',100,200,'金毛') jin.eat() print(jin.hp)

    3.多继承              

    此处只讨论python3

    钻石继承

    class A:
        def __init__(self):print('A')
    
    class B(A):
        def __init__(self):print('B')
    
    class C(A):
        def __init__(self):print('C')
    
    class D(B,C):
        def __init__(self):print('D')
    
    d = D()
    print(D.mro())    # 知识点:mro方法可以查看继承顺序
    D
    [<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
  • 相关阅读:
    015.Python基础--模块
    014.Python基础--格式化输入输出
    013.Python基础--异常/错误处理
    012.Python基础--装饰器深入
    011.Python基础--装饰器
    010.Python基础--生成器
    汇编的角度分析指针-03(字符串深入理解)
    汇编的角度分析C语言的指针-02
    汇编的角度分析C语言的switch语句
    分析C语言的字节对齐
  • 原文地址:https://www.cnblogs.com/jiuyachun/p/10650567.html
Copyright © 2011-2022 走看看