simmilar pytanie (związane z python2: Python: check if method is static)Python3: sprawdzić, czy metoda jest statyczna
Pozwala concider następującą definicję klasy:
class A:
def f(self):
return 'this is f'
@staticmethod
def g():
return 'this is g'
W Pythonie 3 nie ma instancemethod
już wszystko jest funkcją, więc odpowiedź związana z Pythonem 2 nie będzie już działać.
Jak już powiedziałem, wszystko działa, więc możemy zadzwonić pod numer A.f(0)
, ale oczywiście nie możemy zadzwonić pod numer A.f()
(argument missmatch). Ale jeśli wykonamy instancję a=A()
i wywołujemy a.f()
Python przechodzi do funkcji A.f
jako self
jako pierwszego argumentu. Wywołanie a.g()
uniemożliwia wysłanie lub przechwycenie self
- więc musi istnieć sposób sprawdzenia, czy jest to metoda statyczna, czy nie.
Czy możemy sprawdzić w Pythonie3, czy metoda została zadeklarowana jako static
czy nie?
Czy mogę zapytać, dlaczego starasz się to zrobić? –
oczywiście, robię własne ramy wtyczek i chcę sprawdzić niektóre deklaracje interfejsu i chciałbym wiedzieć, czy coś zostało zadeklarowane jako staticmethod lub nie :) –