python - 在 Python 中,什么是 method_descriptor?

标签 python methods

在 Python 中,什么是 method_descriptor(简单的英语)?

我有这个错误,我真的找不到任何关于它的信息:

*** TypeError: can't pickle method_descriptor objects

最佳答案

切换到dill .

I am not interested in debugging this error...

您应该如此。如果您对调试错误不感兴趣,那么您来错地方了。为了礼貌的争论,让我们慷慨地假设你创作了that comment。在不合理的最后期限的胁迫下。 (它发生了。)

标准 pickle 模块无法序列化所谓的“奇异类型”,包括但可能限于:具有yields 的函数、嵌套函数、lambda、单元格、方法、未绑定(bind)方法、模块、范围、切片、code 对象、methodwrapper 对象、dictproxy 对象、getsetdescriptor 对象,memberdescriptor 对象,wrapperdescriptor 对象,notimplemented 对象,ellipsis 对象,quit 对象,和(...等待它!)method_descriptor 对象。

然而,一切并没有丢失。第三方dill package 能够序列化所有这些类型,甚至更多。由于 dillpickle 的直接替代品,因此可以在全局范围内将代码库中对 pickle.dump() 函数的所有调用替换为等效的dill.dump() 函数应该足以处理有问题的方法描述符。

I just want to know what a method_descriptor is, in plain English.

不,你不知道。 没有对方法描述符的通俗易懂的解释,因为 descriptor protocol底层方法描述符是美味的黑暗巫术。

这是巫术,因为它必须是;它是 Python 的函数、属性、静态方法和类方法的核心实现的基础。它是黑暗的,因为只有越来越少的神秘 Pythonista cabal 实际上能够在野外正确地实现描述符。很好吃,因为data descriptors的力量特别是 provide 在 Python 生态系统中是无与伦比的。

幸运的是,您不需要知道用什么方法描述符来腌制它们。你只需要切换到dill .

关于python - 在 Python 中,什么是 method_descriptor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27068154/

相关文章:

生成对象的 Java 方法

php - 方法调用之间的区别 $model->relation();和 $model-> 关系;

python - Django: `QuerySet.__nonzero__` 和 `QuerySet.exists` 之间有什么区别吗?

python - 如何绘制 Pandas 计数的分组条形图

typescript - 'this' 类型仅在类或接口(interface)的非静态成员中可用

java - 在java中,如何创建一个根据以前的方法对对象进行分类的方法?

java - 如何使用java中的方法从大字符串中删除相同的字符

c# - R、Python 或 Octave : empirical quantile (inverse cdf) with confidence intervals?

python - 查找与其他 Canvas 对象重叠的对象 - Python tkinter

python - C 库中的文件句柄泄漏(也许)会给 NFS 带来麻烦(+python,但这是偶然的)