我注意到sqlite3-library仍然使用__conform__-method来调整对象以存储在数据库中。
然后,您需要给类一个方法
__conform__(self, protocol),该方法必须返回转换后的值。
这似乎遵循了佩普246,它指定了__conform__-method,但它已被拒绝;
我拒绝了这个计划。一些更好的事情即将发生,现在说出确切的结果还为时过早,但它不会太接近PEP中的提议,所以最好启动一个新的PEP。GvR。
发布于 2019-05-14 21:57:32
PEP 246是使用特定名称实现特定设计模式(测试传入对象是否符合给定协议)的建议。如果被接受,这个提议将为Python (__conform__)添加一个新的特殊方法,以及一个新的内置函数(adapt)。
PEP的决定只是拒绝标准化。它不禁止任何Python包设计人员在代码中内部创建和使用这样的模式/命名约定。这类似于sqlite3开发人员在命名Cursor方法fetchone()而不是fetchnext()方面的自由。他们可以在合理和实用的范围内,任意命名/设计他们的包组件。
Update - 据埃里克·斯诺说,关于承诺将到来的“更好的东西”:
当时它提到了泛型函数(a la PEP 3124:重载、泛型函数、接口和适应)。然而,最终进入这个空间的是抽象基类(PEP 3119)。
https://stackoverflow.com/questions/49673192
复制相似问题