Абстрактные классы в Python 2.5?

#python #abstract-class

#python #абстрактный класс

Вопрос:

Я пытаюсь использовать абстрактные базовые классы в Python 2.5 (http://docs.python.org/library/abc.html ). Однако эта функция является новой в Python 2.6. Могу ли я просто скопировать исходный файл abc.py в свой pythonpath и заставить все работать правильно? Если нет, то как еще я мог бы получить абстрактные базовые классы в Python 2.5?

Комментарии:

1. С какой стати вы используете Python 2.5? Или я вас неправильно понял?

2. Да, я использую Python 2.5 — обратная совместимость с библиотекой, которая больше не обновляется. Я не совсем уверен, почему это не работает с более новой версией Python, но это не так.

3. Какой из них? Может быть альтернативный вариант.

4. Я использую pyspeech для распознавания речи и TTS в Windows 7

5. Как насчет » Стрекозы «?

Ответ №1:

Вы можете скопировать abc.py модуль из Python2.6. Он не имеет зависимостей и не использует никаких функций, специфичных для Python 2.6.

Исходный код Python 2.7 более сложный из-за зависимости от WeakRefSet.

В дополнение к копированию abc.py , вы можете создать версии функций isinstance и issubclass, которые поддерживают abc.

Комментарии:

1. Я пробовал это, но я могу создавать экземпляры абстрактных базовых классов, не переопределяя абстрактные методы и свойства. Я использую ABCMeta точно так же, как он используется в примере. Я просто запускаю код, найденный в комментариях к abc.py файл (ссылка, которую вы мне дали). Есть какие-нибудь идеи, что может происходить?

2. Проверка не встроена в азбуку. Вы должны добавить это сами.

3. @Ord: Используете ли вы классы нового стиля? Кроме того, более чем вероятно, что вам не нужны азбуки.

4. Я не совсем понимаю, что такое классы нового стиля … не могли бы вы указать мне место, где я могу узнать о них? Нужно ли мне использовать классы нового стиля для использования ABC? И почему мне не нужна азбука?