在Python中创建流类

10 投票
2 回答
14707 浏览
提问于 2025-04-16 15:09

我有一个类,它需要一个包含XML文件的流。
我不一定想用文件流,我可能还想用其他来源,比如数据库、套接字等等。
我需要从哪个类去继承,才能让它支持从其他来源提供流的接口呢?

2 个回答

6

安德烈给出的答案并不完全正确。

在Python中,流是“像文件一样”的对象。你可以使用io模块中定义的工具来读取或写入这些流。这个模块还提供了一些接口,如果你想定义一个流对象,就需要实现这些接口。

需要注意的是,io模块区分了三种不同类型的流,它们需要稍微不同的接口。(它们主要在数据类型上有所不同。)

  1. 文本输入/输出 - 接口是TextIOBase
  2. 二进制输入/输出 - 接口是BufferedIOBase
  3. 原始输入/输出 - 接口是RawIOBase

比如,StringIO就是TextIOBase在内存中的实现。

这些接口在Python 2和3中都是可用的。

4

动态类型让你在这种情况下不需要从任何基类去继承。你应该用合适的名字来实现一些方法。关于这个主题的博客文章

撰写回答