如何在Python中实现方法,`classmethod`和`staticmethod`?

问题描述 投票:22回答:2

[Python中的方法在什么时候获得get属性? —一旦在班级中定义了它们?为什么Python让我定义一个没有任何参数(甚至没有第一个self参数)的方法?

我知道如何使用classmethodstaticmethod,并且我知道它们是内置函数,但是如此修饰的函数会怎样?

本质上,我想知道类定义和类构造之间发生的“魔术”。

python class methods built-in
2个回答
26
投票

检查此。

http://docs.python.org/howto/descriptor.html#static-methods-and-class-methods

您还可以在funcobject.c中查看类和静态方法对象的源代码:

http://hg.python.org/cpython/file/69b416cd1727/Objects/funcobject.c

[类方法对象定义在第694行开始,而静态方法对象定义在第852行开始。(我确实觉得很有趣,当methodobject.c也存在时,它们在funcobject.c中具有标题为“ method”的项。)] >


0
投票

供参考,来自@JAB回答中的the first link

© www.soinside.com 2019 - 2024. All rights reserved.