为什么sqlite3仍然使用__conform__?

问题描述 投票:0回答:1

我注意到

sqlite3
库仍然使用
__conform__
方法来调整对象以存储在数据库中。

然后你需要给你的类一个方法

__conform__(self, protocol)
,它必须返回转换后的值。

^ Python 文档 12.6.6.2.1 ^

这似乎遵循PEP 246,它指定了

__conform__
方法,但已被拒绝;

我拒绝此 PEP。更好的事情即将发生;现在说具体内容还为时过早,但它不会与本 PEP 中的提案太相似,因此最好开始一个新的 PEP。 GvR。

^ PEP 246 拒绝通知 ^

现在,官方 Python 库怎么可能实现在已明确被拒绝的建议中定义的标准

python sqlite pep
1个回答
6
投票

PEP 246 是使用特定名称实现特定设计模式(测试传入对象是否遵守给定协议)的建议。该提案如果被接受,将为 Python 语言添加一个新的特殊方法 (

__conform__
),以及一个新的内置函数 (
adapt
)。

PEP 的决定只是拒绝标准化。它并不禁止任何 Python 包设计者在其代码内部创建和使用此类模式/命名约定。这类似于 sqlite3 开发人员可以自由地将

Cursor
方法命名为
fetchone()
而不是
fetchnext()
。他们可以在合理和实用的范围内以自己喜欢的方式命名/设计其封装组件。

更新 - 根据埃里克·斯诺的说法,关于承诺即将到来的“更好的东西”:

当时它指的是泛型函数(la PEP 3124:重载、泛型函数、接口和适应)。 然而,最终是抽象基类(PEP 3119)进入了这个领域。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.