一、继承:
继承的目的就是节省代码。当两个类有共同的东西时,需要继承
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的新式类中广度优先