二、填空题(10 题)
面向对象三大特性是 、、。
✓ 正确
解析:三大特性:
封装(数据安全)、
继承(代码复用)、
多态(灵活扩展)。
私有属性通常在属性名前加 。
✓ 正确
解析:答案为
__(双下划线)。如
self.__balance = 0。
如果想在类外安全读取私有属性,通常可以提供 方法。
✓ 正确
解析:答案为
get_xx()(如
get_balance())。通过 getter 方法安全读取私有属性。
如果想在类外安全修改私有属性,通常可以提供 方法,并在方法中做校验。
✓ 正确
解析:答案为
set_xx()。在 setter 中校验类型和范围,防止非法数据。
子类继承父类的格式是:class 子类名():
✓ 正确
解析:答案为「父类名」。括号中写要继承的父类名称。
子类重新定义父类同名方法,叫方法 。
✓ 正确
解析:答案为「重写」(Override)。调用时优先执行子类版本。
super().__init__(name, hp) 调用的是 类的初始化方法。
✓ 正确
解析:答案为「父」。
super() 代表当前类的父类。
多继承中查看方法解析顺序的两种写法是 类名.mro() 和 类名.。
✓ 正确
解析:答案为
__mro__。
类名.mro() 返回列表,
类名.__mro__ 返回元组。
类方法需要装饰器 ,第一个参数通常写作 cls。
✓ 正确
解析:答案为
@classmethod。类方法第一个参数
cls 代表类本身。
静态方法需要装饰器 ,通常不需要写 self 或 cls。
✓ 正确
解析:答案为
@staticmethod。静态方法不依赖实例或类属性。
三、简答题(10 题)
什么是封装?封装有什么好处?
查看参考答案 ▼
封装是把属性和方法组织到类里,并控制外部访问方式。好处是让代码结构更清晰,重要数据更安全(私有属性不被外部随意修改),外部使用更简单(通过公共方法调用)。
✓ 正确
参考答案:封装是把属性和方法组织到类里,并控制外部访问方式。好处是让代码结构更清晰,重要数据更安全(私有属性不被外部随意修改),外部使用更简单(通过公共方法调用)。
私有属性是不是意味着外部完全不能使用这个数据?为什么?
查看参考答案 ▼
不是。私有属性只是外部不应该直接访问,但可以通过类提供的公共方法(如 get_balance())间接使用。
✓ 正确
参考答案:不是。私有属性只是外部不应该直接访问,但可以通过类提供的公共方法(如
get_balance())间接使用。
为什么 set_xx() 方法中通常要做数据校验?
查看参考答案 ▼
因为直接修改可能产生非法数据(负数余额、错误年龄)。set_xx() 可以统一做类型检查、范围校验,在修改前拦截不合理数据。
✓ 正确
参考答案:因为直接修改可能产生非法数据(负数余额、错误年龄)。
set_xx() 可以统一做类型检查、范围校验,在修改前拦截不合理数据。
什么是继承?继承的主要好处是什么?
查看参考答案 ▼
继承是子类自动获得父类已有属性和方法的机制。主要好处是减少重复代码,提高复用性。
✓ 正确
参考答案:继承是子类自动获得父类已有属性和方法的机制。主要好处是减少重复代码,提高复用性。
子类继承父类后,是否只能使用父类已有功能?为什么?
查看参考答案 ▼
不是。子类可以:①使用父类已有功能(继承);②新增自己的方法(扩展);③重写父类方法(覆盖)。
✓ 正确
参考答案:不是。子类可以:①使用父类已有功能(继承);②新增自己的方法(扩展);③重写父类方法(覆盖)。
什么是方法重写?什么时候需要方法重写?
查看参考答案 ▼
方法重写是子类重新定义父类同名方法。当父类方法不能满足子类需求时(比如需要不同的输出格式),就需要重写。
✓ 正确
参考答案:方法重写是子类重新定义父类同名方法。当父类方法不能满足子类需求时(比如需要不同的输出格式),就需要重写。
super() 的作用是什么?常见使用场景是什么?
查看参考答案 ▼
super() 用于在子类中调用父类方法。最常见场景:子类重写 __init__ 后,用 super().__init__() 复用父类初始化逻辑。
✓ 正确
参考答案:super() 用于在子类中调用父类方法。最常见场景:子类重写
__init__ 后,用
super().__init__() 复用父类初始化逻辑。
多继承出现同名方法冲突时,为什么不能靠猜?
查看参考答案 ▼
因为多继承的查找顺序由 MRO 决定,不同继承顺序会影响结果。应使用 类名.mro() 查看真实的调用顺序。
✓ 正确
参考答案:因为多继承的查找顺序由 MRO 决定,不同继承顺序会影响结果。应使用
类名.mro() 查看真实的调用顺序。
什么是多态?多态有什么好处?
查看参考答案 ▼
多态是同一个调用入口,传入不同对象,表现出不同结果。好处:调用统一,减少 if/else 分支判断,方便扩展新类型。
✓ 正确
参考答案:多态是同一个调用入口,传入不同对象,表现出不同结果。好处:调用统一,减少 if/else 分支判断,方便扩展新类型。
如何判断一个方法应该写成成员方法、类方法还是静态方法?
查看参考答案 ▼
口诀:需要对象数据(self)→成员方法;需要类数据(cls)→类方法;都不需要→静态方法。
✓ 正确
参考答案:口诀:需要对象数据(self)→成员方法;需要类数据(cls)→类方法;都不需要→静态方法。