在 Python 中创建流类

发布于 2024-10-30 18:25:27 字数 166 浏览 0 评论 0原文

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

I have a class which expects a stream that contains an XML file.
I don't necessarily want a file stream and I might want to use other sources like a database, a socket etc.
What class do I need to subclass from the io module in order to supply the stream interface from other sources?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

赢得她心 2024-11-06 18:25:27

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

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

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

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

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

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

The answer given by Andrey isn't entirely correct.

In Python, streams are "file-like" objects. You can read/write to them using tools defined in the io module. The module also provides interfaces which you should implement if you want to define a stream object.

Note that the io module differentiates between three different types of streams, which require slightly different interfaces. (They differ mostly in terms of data types.)

  1. Text I/O - interface TextIOBase
  2. Binary I/O - interface BufferedIOBase
  3. Raw I/O - interface RawIOBase

StringIO for example is an in-memory implementation of the TextIOBase.

Note that these interfaces are available both on Python 2 and 3.

仄言 2024-11-06 18:25:27

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

Dynamic typing allows you not to subclass from any base class in this case. You should implement some methods with proper names. Blog post on the subject

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文