在 Python 中创建流类
我有一个类需要一个包含 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
安德烈给出的答案并不完全正确。
在 Python 中,流是“类似文件”的对象。您可以使用 io 模块中定义的工具读取/写入它们。该模块还提供了如果您想定义流对象则应实现的接口。
请注意,io 模块区分三种不同类型的流,它们需要稍微不同的接口。 (它们主要在数据类型方面有所不同。)
例如,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.)StringIO for example is an in-memory implementation of the TextIOBase.
Note that these interfaces are available both on Python 2 and 3.
在这种情况下,动态类型允许您不从任何基类派生子类。您应该使用适当的名称来实现一些方法。 有关该主题的博客文章
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