为什么sqlite3仍然使用__conform__?

Tho*_*sma 6 python sqlite pep

我注意到sqlite3-library仍然使用__conform__-method来调整对象以便在数据库中存储.

然后你需要给你的类一个__conform__(self, protocol)必须返回转换值的方法.

^ Python docs 12.6.6.2.1 ^

这似乎遵循PEP 246,它指定了__conform__方法,但它被拒绝了;

我拒绝接受这个PEP.即将发生的事情要好得多; 现在说出确切的内容还为时过早,但它不会过于接近这个PEP中的提议,所以最好开始一个新的PEP.GVR.

^ PEP 246 ^的拒绝通知

现在,官方Python库如何实现已明确拒绝的建议中定义的标准

HFB*_*ing 5

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

PEP 的决定只是拒绝标准化。它并不禁止任何 Python 包设计者在其代码内部创建和使用此类模式/命名约定。这类似于 sqlite3 开发人员在命名方法Cursorfetchone()不是fetchnext(). 他们可以在合理和实用的范围内以自己喜欢的方式命名/设计其封装组件。

更新-根据 Eric Snow 的说法,关于承诺即将到来的“更好的东西”:

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

  • 我接受这个答案,但我仍然想知道“更好的事情即将发生”中的“更好的事情”是什么意思,因为我真的找不到它。(如果您不知道,请说出来。) (3认同)
  • @ThomasE.Duursma我也不知道 - 我同意,Guido的评论相当神秘:)如果我找到它,我会继续搜索并更新我的答案。 (2认同)
  • @ThomasE.Duursma 我告诉过你,如果我**曾经**找到你问题的答案,我会更新答案。两年后我们在这里:) (2认同)