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的新式类中广度优先
  • 相关阅读:
    mysql的root用户无法建库的问题
    jmeter连库获取sql结果存为参数给下一接口用
    webservice接口问题
    今日杂记-20190623
    接口测试
    pyenv和virtualenv管理python的版本(多个版本同时用)
    安装禅道
    经典题,类中的变量
    CSS简介
    python单元测试unittest
  • 原文地址:https://www.cnblogs.com/candysalty/p/11243082.html
Copyright © 2011-2022 走看看