1.什么是继承?继承的目的?
继承是一种新建类的方式,新建的类称之为子类或派生类,继承的父类称之为基类或超类。
减少代码冗余
2.python与期他语言的继承区别是什么?
可以继承多个父类
3.如何寻找继承关系?
抽取对象之间相同的部分,总结出类
抽出类中间相同的部分,总结出父类
4.继承背景下对象属性的查找顺序是什么?
- 画图
![python继承](C:UsersAdministratorDesktoppython继承.png)
5.什么是派生?如何重用父类的属性并派生?两种方式
指的是子类继承父类的属性与方法,并且派生出自己独有的属性与方法。
若子类中的方法名与父类的相同,优先用子类的。
第一种引用父类__init__(),然后添加新的参数
第二种用super
6.什么是新式类与经典类?
凡是继承object的类或子孙类都是新式类。
在python2中,凡是没有继承object的类,都是经典类
7.钻石继承下,经典类与新式类属性的查找顺序是什么?
- 画图
- 广度
- 深度
8.下面这段代码的输出结果将是什么?请解释。
class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
print(Parent.x, Child1.x, Child2.x)
1, 1, 1
继承父类
Child1.x = 2
print(Parent.x, Child1.x, Child2.x)
1, 2 ,1
增加了一个的值
Parent.x = 3
print(Parent.x, Child1.x, Child2.x)
3, 2, 3
child2依然继承父类
9.下述代码新式类与新式类的查找顺序是什么?
class A(object):
def test(self):
print('from A')
class B(A):
def test(self):
print('from B')
class C(A):
def test(self):
print('from C')
class D(B):
def test(self):
print('from D')
class E(C):
def test(self):
print('from E')
class F(D, E):
def test(self):
print('from F')
pass
# python3中校验:
XX --> XX --> ...
D-->B-->E-->C-->A
# python2中校验:
D-->B-->A-->E-->C