• 题库--面向对象:


    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
    

    1.什么是组合?为什么要使用组合?

    组合:

    指的是一个对象中,包含另一个或多个对象。

    作用:

    减少代码的冗余

    2.什么是封装?

    可以将一堆属性和方法,封装到对象中。
    可以通过 “对象.” 的方式获取属性或方法。

    3.什么是访问限制机制?

    访问机制:

    凡是在类内部定义的属性或方法,以__开头的属性或方法名,都会被限制,外部不能 “直接访问” 该属性原型。

    4.访问限制机制的优点?

    优点:

    将一些隐私的数据,隐藏起来,不让外部轻易获取。
    对重要数据获取的逻辑更加严谨, 进而保证了数据的安全.

    5.什么是property?为什么要使用property?

    property:

    是一个python内置的装饰器,可以装饰在"类内部的方法"上

    如何使用:

    在某些场景下,调用的方法只是用来获取计算后的某个值。

    6.练习题:

    '''
    	- 需求:
    			- 老师对象:
    					- 特征:
    							# 老师信息都为隐私数据,需要私有化
    							- 1.姓名
    							- 2.年龄
    							- 3.性别
    							- 4.薪资
    							- 5.等级
    							- 6.身份证ID
    							
    							# 课程列表无需私有化
    							- 7.课程列表
    
    					- 技能:
    							- 1.查看老师信息接口:
    									- 直接打印即可
    									
    							- 2.获取老师身份证ID:
    									- 该方法将 动词设置为 名词的调用方式
    					
    							- 3.添加课程:
    									- 该功能为老师课程列表添加课程对象
    
    							- 4.删除指定课程
    									- 该功能删除老师课程列表中的课程对象
    
    							- 5.修改课程信息
    									- 修改老师课程课表中课程的
    							
    							- 6.打印所有课程
    									- 打印老师课程列表中所有课程的信息	
    											- 遍历调用所有课程对象中打印课程技能
    
    			- 课程对象:
    					- 特征:
    							- 1.课程名称
    							- 2.课程价格
    							- 3.课程周期
    					
    					- 技能:
    							- 1.可以打印课程信息
    '''
    
  • 相关阅读:
    51nod 1004 n^n的末位数字
    51nod 1003 阶乘后面0的数量
    unity3d-多媒体与网络
    unity3d-代码控制游戏角色控制器移动
    unity3d-角色控制器续
    unity3d-物理引擎
    unity3d-碰撞检测
    unity3d-射线(Ray)
    unity3d-小案例之角色简单漫游
    unity3d-绘制贴图
  • 原文地址:https://www.cnblogs.com/WQ577098649/p/11938546.html
Copyright © 2020-2023  润新知