Python面试常见问题:类继承与方法对象解析

2 下载量 35 浏览量 更新于2024-08-30 收藏 64KB PDF 举报
"这篇资源是关于Python面试常见问题的小结,涵盖了类继承、方法对象以及new和init等核心概念,适合准备Python面试的求职者学习和复习。" 在Python编程中,类继承是一个重要的概念,它允许我们创建一个新类(子类)并继承现有类(父类)的特性。在提供的代码示例中,类B继承自类A,并重写了`show`方法。当创建`B`的实例`obj`并调用`show`时,会执行`B`中的方法。如果需要在`B`的实例上调用`A`的`show`方法,可以通过设置`obj.__class__`为`A`,然后调用`show`。不过需要注意的是,这种方法改变了实例的类属性,可能对其他功能产生影响,所以在调用后通常需要将`__class__`恢复原样。 方法对象是指可以像函数一样调用的对象,例如类的方法。在面试中,面试官可能会问到如何让一个对象实例像函数一样被调用。这通常需要实现`__call__`方法。在给出的问题中,类`A`的实例`a1`需要支持直接调用,因此我们需要在`A`类中添加`__call__`方法,使其接收参数并执行相应的操作。在这个例子中,`__call__`方法接收一个`num`参数,并打印`num`与`self.__a`的和。 `__new__`和`__init__`是Python类的特殊方法,它们在创建类的实例时起关键作用。`__new__`是首先被调用的,它负责创建新对象,而`__init__`则用于初始化新创建的对象。在提供的代码片段中,`A`类的`__new__`方法检查传入的参数`a`,如果`a`大于10,那么它会调用父类(即`object`)的`__new__`方法来创建一个`A`的实例;否则,返回一个`B`的实例。`__init__`方法则打印`a`的值。当分别创建`a1`和`a2`时,可以看到`__new__`和`__init__`的调用顺序以及根据`a`的值决定创建的实例类型。 在面试中,理解并能够灵活运用这些核心概念是非常关键的。Python的类继承、方法对象的实现以及`__new__`和`__init__`的使用,都是评估开发者对面向对象编程理解深度的标准。掌握这些知识点不仅有助于解决实际问题,也能在面试中展现出扎实的Python基础。