在Python中创建流类

the*_*row 6 python stream

我有一个类,它需要一个包含XML文件的流.
我不一定需要文件流,我可能想要使用其他来源,如数据库,套接字等.
我需要从io模块继承哪个类才能从其他来源提供流接口?

arn*_*hky 6

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

在 Python 中,流是“类文件”对象。您可以使用io模块中定义的工具读取/写入它们。该模块还提供了接口,如果你想定义一个流对象,你应该实现这些接口。

请注意,该io模块区分了三种不同类型的流,它们需要的接口略有不同。(它们的主要区别在于数据类型。)

  1. 文本 I/O - 接口TextIOBase
  2. 二进制 I/O - 接口BufferedIOBase
  3. 原始 I/O - 接口RawIOBase

例如,StringIO 是 TextIOBase 的内存实现。

请注意,这些接口在 Python 2 和 3 上都可用。


And*_*oev 4

在这种情况下,动态类型允许您不从任何基类派生子类。您应该使用适当的名称来实现一些方法。关于该主题的博客文章

  • 我不明白的是为什么我不应该子类化。无论如何,我的接口应该是流的接口。 (2认同)