面向对象之继承与派生
什么是继承?
继承是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又称为基类或者超类,新建的类称为派生类或者子类
子类会‘遗传’父类的特性,从而解决代码重用问题
python中分为单继承和多继承
class ParentClass1: #定义父类 pass class ParentClass2: #定义父类 pass class SubClass1(ParentClass1): #单继承,父类是ParentClass1,子类是SubClass pass class SubClass2(ParentClass1,ParentClass2): #python支持多继承,用逗号分隔开多个继承的类 pass
查看继承
#print(SubClass1.__bases__) (<class ‘__main__.ParentClass1‘>,) #print(SubClass2.__bases__) (<class ‘__main__.ParentClass1‘>, <class ‘__main__.ParentClass2‘>)
经典类与新式类
1、只有python2中才分为经典类和新式类,python3中都是新式类
2、在python2中没有标明继承object类的类,以及该类的子类,都称为经典类
3、在python2中标明继承object类的类,以及该类的子类,称为新式类
4、python3中,无论是否继承object类,默认都继承object类,即python3中都为新式类
继承与抽象
继承描述的是子类与父类之间的关系,是什么是什么的关系,要找出这种关系,必须先抽象再继承
属性查找
class Foo: def f1(self): print(‘Foo.f1‘) def f2(self): print(‘Foo.f2‘) self.f1() class Bar(Foo): def f1(self): print(‘Foo.f1‘) b=Bar() b.f2()
#得到的结果为:
Foo.f2
Foo.f1