#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? И почему мне не нужна азбука?