在Python中创建流类
我有一个类,它需要一个包含XML文件的流。
我不一定想用文件流,我可能还想用其他来源,比如数据库、套接字等等。
我需要从哪个类去继承,才能让它支持从其他来源提供流的接口呢?
2 个回答
6
安德烈给出的答案并不完全正确。
在Python中,流是“像文件一样”的对象。你可以使用io
模块中定义的工具来读取或写入这些流。这个模块还提供了一些接口,如果你想定义一个流对象,就需要实现这些接口。
需要注意的是,io
模块区分了三种不同类型的流,它们需要稍微不同的接口。(它们主要在数据类型上有所不同。)
- 文本输入/输出 - 接口是TextIOBase
- 二进制输入/输出 - 接口是BufferedIOBase
- 原始输入/输出 - 接口是RawIOBase
比如,StringIO就是TextIOBase在内存中的实现。
这些接口在Python 2和3中都是可用的。
4
动态类型让你在这种情况下不需要从任何基类去继承。你应该用合适的名字来实现一些方法。关于这个主题的博客文章