Создание потокового класса в Python - PullRequest
6 голосов
/ 06 апреля 2011

У меня есть класс, который ожидает поток, содержащий файл XML.
Мне не обязательно нужен поток файлов, и я мог бы использовать другие источники, такие как база данных, сокет и т. Д.
Какой классмне нужно создать подкласс из модуля io , чтобы предоставить интерфейс потока из других источников?

Ответы [ 2 ]

4 голосов
/ 06 апреля 2011

Динамическая типизация позволяет вам не создавать подклассы из какого-либо базового класса в этом случае. Вы должны реализовать некоторые методы с собственными именами. Пост в блоге по теме

2 голосов
/ 10 июля 2017

Ответ, данный Андреем, не совсем корректен.

В Python потоки являются "файловыми" объектами.Вы можете читать / записывать их, используя инструменты, определенные в модуле io .Модуль также предоставляет интерфейсы, которые вы должны реализовать, если хотите определить объект потока.

Обратите внимание, что модуль io различает три различных типа потоков, которые требуют немного разных интерфейсов.(В основном они различаются по типам данных.)

  1. Текстовый интерфейс ввода-вывода TextIOBase
  2. Двоичный интерфейс ввода-вывода BufferedIOBase
  3. Необработанный интерфейс ввода-вывода RawIOBase

Например, StringIO является реализацией TextIOBase в памяти.

Примечаниечто эти интерфейсы доступны как в Python 2, так и в 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...