• 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'>]
  • 相关阅读:
    Chaos网络库(一) 开篇介绍
    对Oracle中的表进行分区
    java socket编程
    SQL优化
    冒泡排序、选择排序和插入
    集合有趣的地方
    java中String s = new String("abc")创建了几个对象
    集合排序
    接口与抽象类的区别
    软件测试流程
  • 原文地址:https://www.cnblogs.com/jiuyachun/p/10650567.html
Copyright © 2020-2023  润新知