检查 class 中的方法是否是静态的而不实例化
Check if method is static from class without instantiating
如何检查给定 class 的方法是否为静态方法,而不是 class 的实例。在某些用例中,class 的实例化可能会产生一些后果,您可能需要在任何实例化之前知道方法是否是静态的。以 class:
为例
class MyClass:
def method(self):
pass
@staticmethod
def static_method():
pass
我需要一个函数 is_staticmethod
给出:
>>> is_staticmethod(MyClass, 'method')
False
>>> is_staticmethod(MyClass, 'static_method')
True
并且如前所述,此函数不应实例化 class。我试图搜索一个已经回答了这个问题的问题,但得到了很多与 class 实例相关的结果,这不是我需要的。
注意:这不是 Python: check if method is static
的副本
首先从 class 的命名空间中获取它,然后使用 isinstance
:
def is_staticmethod(cls, m):
return isinstance(cls.__dict__.get(m), staticmethod)
print(is_staticmethod(MyClass, 'method')) # False
print(is_staticmethod(MyClass, 'static_method')) # True
如何检查给定 class 的方法是否为静态方法,而不是 class 的实例。在某些用例中,class 的实例化可能会产生一些后果,您可能需要在任何实例化之前知道方法是否是静态的。以 class:
为例class MyClass:
def method(self):
pass
@staticmethod
def static_method():
pass
我需要一个函数 is_staticmethod
给出:
>>> is_staticmethod(MyClass, 'method')
False
>>> is_staticmethod(MyClass, 'static_method')
True
并且如前所述,此函数不应实例化 class。我试图搜索一个已经回答了这个问题的问题,但得到了很多与 class 实例相关的结果,这不是我需要的。
注意:这不是 Python: check if method is static
的副本首先从 class 的命名空间中获取它,然后使用 isinstance
:
def is_staticmethod(cls, m):
return isinstance(cls.__dict__.get(m), staticmethod)
print(is_staticmethod(MyClass, 'method')) # False
print(is_staticmethod(MyClass, 'static_method')) # True