【发布时间】:2012-12-20 17:04:30
【问题描述】:
类似问题(与 Python2 相关:Python: check if method is static)
让我们考虑以下类定义:
class A:
def f(self):
return 'this is f'
@staticmethod
def g():
return 'this is g'
在 Python 3 中没有 instancemethod 了,一切都是函数,所以与 Python 2 相关的答案将不再起作用。
正如我所说,一切都是函数,所以我们可以调用A.f(0),但当然我们不能调用A.f()(参数不匹配)。但是,如果我们创建一个实例a=A() 并调用a.f(),Python 会将self 作为第一个参数传递给函数A.f。调用a.g() 会阻止发送它或捕获self - 所以必须有一种方法来测试这是否是静态方法。
那么我们可以在 Python3 中检查一个方法是否声明为 static 吗?
【问题讨论】:
-
我能问一下你为什么要这样做吗?
-
当然,我正在制作我自己的插件框架,我想检查一些接口声明,我很想知道是否有东西被声明为静态方法:)
标签: python python-3.x static static-methods introspection