zoukankan      html  css  js  c++  java
  • Python 继承,继承顺序 day7

    一、继承:

    继承的目的就是节省代码。当两个类有共同的东西时,需要继承

    class Syy():
        country='China'
        def __init__(self):
            self.money=5000
        def chaogu(self):
            self.money+=50000
            print('炒股%s'%self.money)  
    
    class Xs(Syy )      #继承:子类(父类),父类中的方法,子类中都有。继承可继承多个父类
        def chaogu(self):
            print('炒股,唱歌',self.money)     #money 是继承的money:5000
            self.money=500   #会覆盖父类的方法。方法重写
            print("重写后的money%s"%self.money)#money是重写后的money:500
            #super().XXX找到父类的XXX方法,并实例化一下(即调用)。可用作在父类基础上做修改。原父类的参数仍要传参:
            super().chaogu()
    
    sdb=Xs()
    sdb.chaogu()

    二、例子

    class BaseDB:
        def __init__(self,ip,port,password,db):
            self.ip=ip
            self.port=port
            self.password=password
            self.db=db
    class MySQL:
        def __init__(self,ip,user,port,password,db):   #定义本参数要传的值
            super().__init__(ip,port,password,db)   #继承基类,并传入基类所需参数
            self.user=user
    #当需要父类的功能,并需要补充时,使用super()来继承父类
    class Redis(BaseDB):
        def conn(self):
            self.r=redis.Redis(host=self.ip,db=self.db,password=self.password)
    #当需要的值与基类的值完全一致,不需要补充时,可以不用super()

    三、多继承时的继承顺序

    当一个类继承了多个类时,继承顺序:

    class A(object):#python2中的新式类,等同与python3中的class A:
        def say(self):
            print('A')
    
    
    class B(A):
        # pass
        def say(self):
            print('B')
    
    
    class C(A):
        pass
        # def say(self):
        #     print('c')
    
    class D(C, B):
        pass
    d=D()
    d.say()   
    print(D.mro())   #查看继承顺序
    # [<class '__main__.D'>, <class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]   #广度优先
    #[<class '__main__.D'>, <class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>] 深度优先
    #python 2 中深度优先
    #python3或python2的新式类中广度优先
  • 相关阅读:
    算法导论之贪心算法
    编程过程中遇到的一些细节
    c++11和c99
    面试总结(YY一面)
    python(17):字典
    python(16):元组
    python(15):练习题
    python(14):列表
    python(13):字符串
    python(12):练习题
  • 原文地址:https://www.cnblogs.com/candysalty/p/11243082.html
Copyright © 2011-2022 走看看