gpt4 book ai didi

Python 数据模型 : confused again with classmethod

转载 作者:行者123 更新时间:2023-11-28 19:26:45 28 4
gpt4 key购买 nike

据说:

When it would yield a class method object, it is transformed into a bound user-defined method object whose im_class and im_self attributes are both C.

Reference

我做了一个 EX。

>>> class C(object) :
... @classmethod
... def cm(cls) : print cls
...
>>> C.cm
<bound method type.cm of <class '__main__.C'>>
>>> C.cm.im_self
<class '__main__.C'>
>>> C.cm.im_class
<type 'type'>

我不难理解这种现象。但不幸的是,在引用资料中,它被告知 im_self 应该与 im_class 相同。如何解释不一致?

最佳答案

我读的和你一样。看来 Python 实际执行的操作与文档中所说的并不完全相同。

它将 im_self 设置为类,将 im_class 设置为类的类型,即它的元类。 Python 中类的默认元类是 type。这类似于绑定(bind)到实例的方法所发生的情况:im_self 是实例,im_class 是实例的类型。在 @classmethod 的情况下,换句话说,类被视为实例(它是;它是 type 的实例)。

可能在没有更新文档的情况下更改了行为,或者文档一开始就是错误的。我以编写文档为生,我可以确认,对于 Python 大小的东西,要使其 100% 正确几乎是不可能的——尤其是对于像这样晦涩的细节。

Python 开发人员在文档中有报告错误的程序。 Give it a try !

关于Python 数据模型 : confused again with classmethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107205/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com