【MK】Python全栈 阶段一:习题汇总 五:面向对象编程

本文档汇总了Python面向对象编程的习题,包括单选题、多选题、练习题和编程题,涉及类的定义、私有函数与变量、装饰器、继承、多态和多重继承等概念,旨在加深对Python OOP的理解。
摘要由CSDN通过智能技术生成

版权声明:本文为博主原创文章,未经博主允许不得转载。



一、单选题

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

InitialHeart2021

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值