题库:

1.什么是继承?继承的目的?

继承:

指的是新建类的方法, 新建的类称之为子类或者派生类,
子类继承的类叫做父类,也称之为基类或超类.

目的:

减少代码冗余,(减少重复代码)。

2.python与期他语言的继承区别是什么?

在python中,一个子类可以继承多个父类。
其他语言:只能一个子类继承一个父类。

3.如何寻找继承关系?

想要寻找继承关系时,首先要'抽象',再继承。

4.继承背景下对象属性的查找顺序是什么?

1.对象查找属性时会先从对象的名称空间中查找。

2.若对象中没有时,去类中查找。
3.若当前是子类,并且没有对象找的属性时,则会去父类中查找。
注意:对象查找属性时,若子类中有对象,不管你父类有没有,以子类为主。

5.什么是派生?如何重用父类的属性并派生?两种方式

派生

:派生指的是子类继承父类的属性,并且派生出新的属性.

方式一

:直接通过 父类.(调用)init,把__init__当做普通函数使用,传入对象与继承的属性.

方式二

: super是一个特殊的类,在子类中调用super()会得到一个特殊的对象, 通过"."指向的是父类的名称空间.

6.什么是新式类与经典类?

新式类:

继承object的类都称之为新式类.
python3中,子类不继承自定义的类,默认继承 object.

经典类:

在 python2 中,但凡没有继承 object 的类都是经典类。

7.钻石继承下,经典类与新式类属性的查找顺序是什么?

  • 广度 新式类 :直接一次找到低,找到 object 拿到A 在返回,找E,不找object。
    • 深度 经典类 :找D时,不着objiect,找E时,直到找到object结束。

8.下面这段代码的输出结果将是什么?请解释。

   8.下面这段代码的输出结果将是什么?请解释。
        class Parent(object):
           x = 1
        class Child1(Parent):
           pass
        class Child2(Parent):
           pass
        print(Parent.x, Child1.x, Child2.x)
        Child1.x = 2
        print(Parent.x, Child1.x, Child2.x)
        Parent.x = 3
        print(Parent.x, Child1.x, Child2.x)
        
        #   1   1   1
        #   1   2   1
        #   3   2   3
        
        因为child1和child2是子类,继承了父类,当父类 x = 1时
        child1 和 child2 继承了父类。值:1  1   1
        
        当 child1.x = 2 时,child1为子类,对象查找属性时,若子类中有对象,不管你父类有没有,以子类为主。child.X是父类,值不变还是 1,child2.x继承了父类的值为1。  值:  1  2   1
        
        当 Parent.x = 3时 ,覆盖掉Parent的值。根据类的查找方法,子类中找到则,则不找父类,child1.x子类的值为2。因而child2.x继承了父类的值,预知 Parent 已被覆盖值为3.  值: 3    2   3

9.下述代码新式类与新式类的查找顺序是什么?

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中校验: F - D -B - E -C -A -object
        XX --> XX --> ...

# python2中校验: F - D - B -A - E -C

猜你喜欢

转载自www.cnblogs.com/WQ577098649/p/11938546.html