我注意到
sqlite3
库仍然使用 __conform__
方法来调整对象以存储在数据库中。
然后你需要给你的类一个方法
,它必须返回转换后的值。
__conform__(self, protocol)
这似乎遵循PEP 246,它指定了
__conform__
方法,但已被拒绝;
我拒绝此 PEP。更好的事情即将发生;现在说具体内容还为时过早,但它不会与本 PEP 中的提案太相似,因此最好开始一个新的 PEP。 GvR。
现在,官方 Python 库怎么可能实现在已明确被拒绝的建议中定义的标准?
PEP 246 是使用特定名称实现特定设计模式(测试传入对象是否遵守给定协议)的建议。该提案如果被接受,将为 Python 语言添加一个新的特殊方法 (
__conform__
),以及一个新的内置函数 (adapt
)。
PEP 的决定只是拒绝标准化。它并不禁止任何 Python 包设计者在其代码内部创建和使用此类模式/命名约定。这类似于 sqlite3 开发人员可以自由地将
Cursor
方法命名为 fetchone()
而不是 fetchnext()
。他们可以在合理和实用的范围内以自己喜欢的方式命名/设计其封装组件。
更新 - 根据埃里克·斯诺的说法,关于承诺即将到来的“更好的东西”:
当时它指的是泛型函数(la PEP 3124:重载、泛型函数、接口和适应)。 然而,最终是抽象基类(PEP 3119)进入了这个领域。