版权声明:本文为博主原创文章,未经博主允许不得转载。
文章目录
- 一、单选题
- 二、多选题
- 三、练习题
- 四、编程题
一、单选题
1.1 类的定义
1.下列选项中关于 self 的说法正确的是( D )
- A .self 参数跟函数的参数一样,调用时需要传值
- B .类中的 self 只能在带有self参数的函数中使用
- C .定义类属性变量时需要用self 【??】
- D .self是类函数中必传的参数,且必须放在第一位
1.2 私有函数与私有变量
2.如下代码,当调用Teacher类中的study方法时,输出公司名称,性别,教师姓名,补全代码,使程序正常运行:
class Teacher(object):
'''这是个教师类'''
company = 'imooc'
def __init__(self, name, sex):
self.name = name
self.__sex = sex
def study(self):
print('公司名称 :{}'.format(self.company))
print('性别:{}'.format(self.__sex))
print('教师姓名:{}'.format(self.name))
teacher = Teacher(name = '李梅', sex = '女')
teacher.study()
3.关于装饰器,下列选项中描述错误的是( )
- A .如果装饰器和被装饰函数在同一个.py文件时,装饰器和被装饰函数的定义分先后
- B .使用@标识符将装饰器应用到函数
- C .装饰器是在不改变原有函数的基础上增加额外的功能
- D .有了装饰器,我们可以抽离出大量与函数功能本身无关的雷同代码
4.请看下面的程序代码,推测其运行结果为:
def log(func):
def wrapper():
print('call %s():' % func.__name__)
func()
return wrapper
@log
def hello():
print('hello world')
def now():
print('2018-11-27')
now()
hello()
# 运行结果
2018-11-27
call hello():
hello world
5.请看下面的程序代码,运行结果:
def wrapper(func):
def inner(*args, **kwargs):
print('believe yourself')
func(*args, **kwargs)
return inner
@wrapper
def func_01(a, b):
print('1~~~~~~result is %d' % (a + b))
@wrapper
def func_02(a, b, c, d):
print('2~~~~~result is %d' % (a + b + c + d))
func_01(10, 20)
func_02(1,2,3,4)
believe yourself
1~~~~~~result is 30
believe yourself
2~~~~~result is 10
1.3 类中的装饰器
6.下列选项中,关于 classmethod 的功能描述及使用正确的是( A )
- A .classmethod类函数可以不经过实例化直接被调用
- B .classmethod类函数的第一个参数是self 【cls】
- C .classmethod类函数中可以调用带有self的类函数 【不可以】
- D .classmethod 【@classmethod 】
def subject(cls):
pass
1.3 类的继承
7.关于继承的说法,下列不正确的是( )【???】
- A .继承是类与类之间的一种关系
- B .继承是使用已存在的类作为基础并建立新的类
- C .子类继承父类的时候可以增加新的功能 【√ 】
- D .子类可以有选择的继承父类的功能 【√ 】
1.3 类的继承:super
8.如下程序,请认真阅读代码,程序运行结果为( C)
class Base_student(object):
def study(self):
print('通过阅览书籍丰富知识')
class Man_study(Base_student):
def study(self):
super(Man_study, self).study()
print('通过报刊丰富知识')
class Woman_study(Base_student):
def study(self):
super(Woman_study, self).study()
print('通过阅览新闻丰富知识')
man = Man_study() # 只有实例化,没有调用
woman = Woman_study()
woman.study()
通过阅览书籍丰富知识
通过阅览新闻丰富知识
- A .通过阅览书籍丰富知识
通过报刊丰富知识
通过阅览新闻丰富知识- B .通过报刊丰富知识
通过阅览新闻丰富知识- C .通过阅览书籍丰富知识
通过阅览新闻丰富知识- D .通过阅览书籍丰富知识
通过报刊丰富知识
1.4 类的多态
9.下列选项中,关于类的多态描述正确的是( B )
- A .多态只是单纯的继承父类
- B .多态继承父类重写父类方法
- C .多态就是一个类
- D .多态就是类中的某个方法
1.5 类的多重继承
10.如下程序所示,下列描述正确的是( B )
# 练习
class Person(object):
pass
class Father(Person):
pass
class Child(Father):
pass
- A .Child类继承Father类和Person类
- B .Child类只继承Father类
- C .Child类只继承Person类
- D .Child类不能全部继承Person类和Father类
二、多选题
1.X
- A .
- B .
- C .
- D .
三、练习题
3.1 类的定义
def sleep(name):
return name
# 定义类
class Person(object):
name = None
age = None
def run(self, name):
self.name = name
print(f'{
self.name} 在奔跑')
def jump(self):
print(f'{
self.name} 在跳跃')
def work(self):
self.jump()
result = sleep(self.name)
print('sleep result is', result)
# 类的实例化
xiaomu = Person()
xiaomu.run('小慕')
print('——————————————————————————————————————')
dewei = Person()
dewei.name = '德威'
dewei.jump()
print('——————————————————————————————————————')
dewei.top = 174
print(dewei.top) # 实例化对象可以自定义属性
print('——————————————————————————————————————')
dewei.work()
print('——————————————————————————————————————')
# print(xiaomu.top)
print(dewei.age)
3.2 类的构造函数
class Person(object):
def __init__(self, name, age=None):
self.name = name
self.age = age
def run(self):
print(f'{
self.name} 在奔跑!')
def jump(self):
print(f'{
self.name} 在跳跃!')
def work(self):
self.run()
self.jump()
xiaomu = Person(name = '小慕', age = 33)
# xiaomu.name = 'xiaomu'
xiaomu.run()
dewei = Person(name = '德威', age = 18)
dewei.jump()
3.3 私有函数与私有变量
class Person(object):
def __init__(self, name):
self.name = name
self.__age = 33 # 私有变量
def dump(self):
print(self.name, self.__age)
def __cry(self): # 私有函数
return 'I want cry'
class Cat(object):
__cat_type = 'cat'
def __init__(self, name, sex):
self.name = name
self.__sex = sex
def run(self):
result = self.__run()
print(result)
def __run(self): # 私有函数
return f'{
self.__cat_type},小猫 {
self.name} {
self.__sex} 开心的奔跑着'
def jump(self):
result = self.__jump()
print(result)
def __jump(self): # 私有函数
return f'{
self.__cat_type} 小猫 {
self.name} {
self.__sex} 开心的跳着'
cat = Cat(name = '咪咪', sex='boy')
cat.run()
cat.jump