扩大
缩小
人生本来就短暂,为什么还要栽培苦涩。
返回顶部

题库--面向对象:

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.可以打印课程信息
'''
posted @ 2019-11-26 21:20  晴天sky  阅读(184)  评论(0编辑  收藏  举报
左边日期 搜索的制定样式