Python面试热门:10道常问类继承与方法对象问题解析
27 浏览量
更新于2024-08-29
收藏 64KB PDF 举报
"这篇资源主要列举了Python程序员面试中常被问到的10个问题,涉及类继承、方法对象以及`__new__`和`__init__`的区别等核心概念。"
在Python编程中,类继承是面向对象设计的重要组成部分,它允许创建一个新的类(子类)来扩展或修改现有类(父类)的功能。在提供的代码示例中,`class B(A)`表明`B`是`A`的子类,继承了`A`的属性和方法。当调用`obj.show()`时,实际执行的是`B`类中定义的`show`方法。如果需要调用`A`类的`show`方法,可以通过设置`obj.__class__ = A`,然后调用`obj.show()`,但这会改变`obj`的类型,因此在调用后应将其恢复为原来的类型`B`。
方法对象是指类中的函数,它们在被实例化后可以作为对象的方法被调用。面试中提到的一个问题是,如何使对象实例能够像函数一样直接被调用。这需要在类中实现`__call__`方法。例如,`A`类的实例`a1`应该能直接接收参数并执行相关操作。为此,我们需要添加`__call__`方法,使得`a1(80)`这样的调用能够正确执行。代码示例如下:
```python
class A(object):
def __init__(self, a, b):
self.__a = a
self.__b = b
def myprint(self):
print('a=', self.__a, 'b=', self.__b)
def __call__(self, num):
print('call:', num + self.__a)
```
接下来,`__new__`和`__init__`是Python中两个与对象创建密切相关的特殊方法。`__new__`是首先被调用的,它负责生成新的对象实例,而`__init__`则用于初始化新创建的对象。在给出的代码片段中,`__new__`被重写以根据传入的参数`a`的值决定创建`A`类还是`B`类的实例。`__init__`则用于打印特定的信息。当`a > 10`时,`__new__`会返回`super(A, cls).__new__(cls)`,即创建`A`类的实例,否则创建`B`类的实例。
这个例子展示了如何在创建对象时动态地改变类的行为,这种能力在设计元类或者实现某些高级功能时尤其有用。理解这些基本概念对于Python程序员来说至关重要,因为它们是Python面向对象编程的核心部分,也是面试中常考的知识点。通过掌握这些内容,开发者能够更好地理解和构建复杂、灵活的Python应用程序。
2023-09-16 上传
2023-03-25 上传
2023-10-22 上传
2023-05-15 上传
2023-04-28 上传
2023-05-20 上传
weixin_38563871
- 粉丝: 1
- 资源: 959
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码