Почему sqlite3 все еще использует __conform__?
Я заметил, что sqlite3
Библиотека по-прежнему использует __conform__
-метод адаптации объектов для хранения в базе данных.
Тогда вам нужно дать вашему классу метод
__conform__(self, protocol)
который должен вернуть преобразованное значение.
^ Документы Python 12.6.6.2.1 ^
Это похоже на PEP 246, который определяет __conform__
-метод, но он был отклонен;
Я отказываюсь от этого ПКП. Должно произойти что-то намного лучшее; слишком рано говорить, что именно, но это не будет напоминать предложение в этом ПКП, поэтому лучше начинать новый ПКП. GvR.
^ Уведомление об отклонении PEP 246 ^
Теперь, как может быть, что официальная библиотека Python реализует стандарт, который был определен в предложении, которое было явно отклонено?
0 ответов
PEP 246 был предложением реализовать определенный шаблон проектирования (тестирование того, придерживается ли входящий объект заданного протокола) с использованием определенного имени. Предложение, если оно будет принято, добавило бы новый специальный метод в язык Python (__conform__
), а также новую встроенную функцию (adapt
).
Решение PEP просто отвергло стандартизацию. Это не запрещает разработчикам пакетов Python создавать и использовать такое соглашение о шаблонах / именах внутри своего кода. Это аналогично свободе, которую имеют разработчики sqlite3 при именованииCursor
метод fetchone()
скорее, чем fetchnext()
. Они могут называть / разрабатывать свои компоненты пакета, как им нравится, в пределах разумного и полезного.