假设以下类定义:
class A: def f(self): return 'this is f' @staticmethod def g(): return 'this is g' a = A()
因此,f是常规方法,而g是静态方法。
现在,如何检查功能对象af和ag是否静态?Python中是否有“静态”功能?
我必须知道这一点,因为我有包含许多不同功能(方法)对象的列表,要调用它们,我必须知道它们是否期望“ self”作为参数。
让我们尝试一下:
>>> import types >>> class A: ... def f(self): ... return 'this is f' ... @staticmethod ... def g(): ... return 'this is g' ... >>> a = A() >>> a.f <bound method A.f of <__main__.A instance at 0x800f21320>> >>> a.g <function g at 0x800eb28c0> >>> isinstance(a.g, types.FunctionType) True >>> isinstance(a.f, types.FunctionType) False
因此,看起来您可以types.FunctionType用来区分静态方法。