Simmilar question (related with Python2: Python: check if method is static)
Lets concider following class definition:
class A:
def f(self):
return 'this is f'
@staticmethod
def g():
return 'this is g'
In Python 3 there is no instancemethod
anymore, everything is function, so the answer related to Python 2 will not work anymore.
As I told, everything is function, so we can call A.f(0)
, but of course we cannot call A.f()
(argument missmatch). But if we make an instance a=A()
and we call a.f()
Python passes to the function A.f
the self
as first argument. Calling a.g()
prevents from sending it or captures the self
- so there have to be a way to test if this is staticmethod or not.
So can we check in Python3 if a method was declared as static
or not?
class A:
def f(self):
return 'this is f'
@staticmethod
def g():
return 'this is g'
print(type(A.__dict__['g']))
print(type(A.g))
<class 'staticmethod'>
<class 'function'>