题库首页 › GESP等级认证(Python) › 题目 25937

下列代码中,执行 d1.work() 和 d2.work() 输出不同结果的主要原因是( )。 class Device: def work(self): print("Device is working") class Printer(Device): print("Printer is printing") class Scanner(Device): print("Scanner is scanning") if __name__ == '__main__': d1 = Printer() d2 = Scanner() d1.work() d2.work()

A:Printer 和 Scanner 使用了相同的构造函数
B:子类重写了父类的 work 方法,Python 会根据对象实际类型调用对应版本的方法
C:d1 和 d2 是不同的变量
D:程序中使用了 del 释放对象

正确答案:B

答案解析

分析类的继承关系,确认父类Device中定义了work方法。检查子类Printer和Scanner是否重新实现了work方法。确认d1和d2分别指向Printer和Scanner的实例。方法调用时,Python根据对象的实际类型查找对应类中的work方法。若子类重写该方法,则调用子类版本;否则回退到父类实现。两个子类各自提供了不同的work实现,因此调用结果不同。

试卷来源:202606 CCF-GESP编程能力等级认证Python六级真题

本卷相关题目

在线做题 同科目题库