Python3: проверьте, является ли метод статическим
Simmilar вопрос (связанный с Python2:Python: проверьте, является ли метод статичным)
Позволяет констатировать следующее определение класса:
class A:
def f(self):
return 'this is f'
@staticmethod
def g():
return 'this is g'
В питоне 3 нетinstancemethod
больше все работает, поэтому ответ, связанный с Python 2, больше не будет работать.
Как я уже сказал, все является функцией, поэтому мы можем вызватьA.f(0)
, но, конечно, мы не можем позвонитьA.f()
(несоответствие аргумента). Но если мы сделаем примерa=A()
и мы называемa.f()
Python переходит к функцииA.f
self
в качестве первого аргумента. призваниеa.g()
препятствует отправке или захватываетself
- поэтому должен быть способ проверить, является ли это статическим методом или нет.
Так можем ли мы проверить в Python3, был ли метод объявлен какstatic
или нет?