交互式练习

Python 练习 001

20 道题 · 选择题 + 填空题 · 即时反馈 · 记录保存
← 返回主页
0
正确
0
已完成
20
总题数
查看做题记录 ▼

做题记录

暂无记录

答题详情

一、选择题(共16题)
Q1
关于继承的术语,以下描述正确的是?
A 被继承的类称为子类,继承后产生的新类称为父类
B 父类是被继承的类,子类继承父类后形成的新类称为派生类
C 派生和继承是相反的动作,派生是从子类产生父类
D 扩展是指子类删除父类中不需要的方法
Q2
子类重写父类方法后,调用该方法时的查找顺序是?
A 先找父类 → 再找子类 → 找到即停止
B 同时查找父类和子类,合并结果
C 先找子类 → 再找父类 → 找到即停止(就近原则)
D 随机选择一个版本执行
Q3
多继承和多层继承的本质区别是什么?
A 多继承是"平行多个父类",多层继承是"纵向层级链路"
B 多继承就是多层继承,只是叫法不同
C 多继承只能有2个父类,多层继承可以有任意层级
D 多继承的子类不需要调用父类方法
Q4
super() 和"父类名.方法(self)"完全等价,没有任何区别。
A 正确
B 错误
Q5
在 Python 中,如何查看多继承下的方法解析顺序(MRO)?
A Child.parents()
B Child.inherits()
C Child.mro()Child.__mro__
D dir(Child)
Q6
强类型语言中"真正的多态"需要满足哪三个条件?
A ① 有继承 ② 有重写 ③ 父类引用指向子类对象
B ① 有接口 ② 有实现 ③ 有注解
C ① 有类 ② 有对象 ③ 有方法
D ① 有多继承 ② 有 super() ③ 有 MRO
Q7
Python 中,即使两个类没有继承关系,只要它们有同名方法,就可以实现"伪多态"(鸭子类型)。
A 正确
B 错误
Q9
为什么 self.count += 1 可能造成类属性统计异常?
A Python 不允许在实例方法中修改类属性
B 可能在实例上创建同名属性,遮蔽了类属性
C 类属性是只读的,不能修改
D self 无法访问类属性
Q10
判别成员方法、类方法、静态方法的口诀是什么?
A 看方法名长度
B 看是否有 return 语句
C 看方法定义的位置
D 用 self 是成员方法,用 cls 是类方法,都不用是静态方法
Q11
以下代码中,get_count() 属于什么类型的方法?
class Tool: count = 0 @classmethod def get_count(cls): return cls.count
A 成员方法
B 类方法
C 静态方法
D 私有方法
Q12
在 Python 中如何定义私有属性?
A 属性名前加一个下划线 _name
B 使用 private 关键字
C 属性名前加双下划线 __name
D 在类外部定义属性
Q13
含有抽象方法的抽象类可以直接实例化。
A 正确
B 错误
Q17
以下代码的输出是什么?
class A: count = 0 def add(self): A.count += 1 a1 = A() a2 = A() a1.add() a2.add() print(A.count)
A 0
B 1
C 2
D 报错
Q18
在 Python 中,可以使用 isinstance(a, Animal) 来做类型检查,限制多态调用的参数类型。
A 正确
B 错误
Q19
关于 super().__init__()Parent.__init__(self),描述错误的是?
A super() 不需要手动传 self
B 父类名调用需要手动传 self
C 在多继承中 super() 按 MRO 顺序调用
D super() 只能调用父类的 __init__ 方法
Q20
以下代码的运行结果是?
class Parent: def show(self): print("Parent") class Child(Parent): def show(self): print("Child") c = Child() c.show()
A 先输出 Parent,再输出 Child
B 只输出 Child
C 只输出 Parent
D 报错
二、填空题(共4题)
Q8
在类中方法外定义的属性属于 ,所有对象共享同一份数据。
Q14
请在空白处填入合适的代码,使子类正确调用父类的 __init__
class Animal: def __init__(self, name): self.name = name class Dog(Animal): def __init__(self, name, breed): .__init__(name) self.breed = breed
Q15
补全代码,使 age 成为私有属性:
class Girl: def __init__(self): self.name = "小美" self. = 18
Q16
补全抽象方法的声明,使子类必须实现 call 方法:
from abc import ABC, abstractmethod class AnimalBase(ABC): def call(self): pass