在Python中,method_descriptor是什么?

cap*_*let 5 python methods

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

我遇到了这个错误,但实际上找不到任何信息:

*** TypeError: can't pickle method_descriptor objects
Run Code Online (Sandbox Code Playgroud)

Cec*_*rry 5

切换到dill

我对调试这个错误不感兴趣......

你应该。如果您对调试错误不感兴趣,那么您就在错误的领域。为了礼貌的争论,让我们仁慈地假设您在不合理的截止日期的胁迫下撰写了该评论。(它发生了。

标准pickle模块是不能序列化所谓的“外部类型,”包括但大概局限于:功能与yields,嵌套函数,lambda表达式,细胞,方法,未结合的方法,模块,范围,切片,code对象,methodwrapper对象,dictproxy对象,getsetdescriptor对象,memberdescriptor对象,wrapperdescriptor对象,notimplemented对象,ellipsis对象,quit对象和(...等待它!method_descriptor对象。

然而,一切都没有丢失。第三方dill软件包 能够序列化所有这些类型的并且基本上更多的。由于dill是 的直接替代pickle,因此将代码库中的所有调用全局替换为pickle.dump()具有等效dill.dump()函数的函数应该足以解决有问题的方法描述符。

我只想知道 amethod_descriptor是什么,用简单的英语。

不,你没有。还有就是方法的描述没有纯英文的解释,这是因为描述协议基本方法的描述是美味的黑巫术。

这是伏都教,因为它必须是;它是 Python 核心实现函数、属性、静态方法和类方法的基础。这很黑暗,因为只有越来越少的秘密 Pythonistas 能够在野外正确实现描述符。这很好吃,因为数据描述符特别提供的功能在 Python 生态系统中是无与伦比的。

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

  • 哦拜托。停止调用描述符巫术。至少对于基本的理解来说,只要说它们覆盖了成员访问运算符(点,如“obj.member”中的)就足够了。你可以读取一个成员,写入它,或者删除它 - 因此有`__get__`,`__set__`和`__del__`。这是非常简单的英语 (3认同)

小智 0

__get__method_descriptor 是一个带有,__set__和方法的普通类 __del__您可以在 Python 中的静态与 str 的实例方法中查看链接以获取更多信息