domanda simmilar (collegati al python2: Python: check if method is static)python3: verificare se il metodo è statico
Lets considerate questo seguente definizione di classe:
class A:
def f(self):
return 'this is f'
@staticmethod
def g():
return 'this is g'
In Python 3 non c'è più instancemethod
, tutto è funzione, in modo la risposta relativa a Python 2 non funzionerà più.
Come ho detto, tutto è funzione, quindi possiamo chiamare A.f(0)
, ma ovviamente non possiamo chiamare A.f()
(argomento missmatch). Ma se facciamo un'istanza a=A()
e chiamiamo a.f()
Python passa alla funzione A.f
il self
come primo argomento. Chiamare a.g()
impedisce di inviarlo o cattura lo self
- quindi ci deve essere un modo per verificare se questo è staticmethod o meno.
Quindi è possibile verificare in Python3 se un metodo è stato dichiarato come static
o no?
Posso chiedere perché si sta cercando di fare questo? –
ovviamente, sto creando il mio framework di plugin e voglio controllare alcune dichiarazioni dell'interfaccia e mi piacerebbe sapere se qualcosa è stato dichiarato come staticmethod oppure no :) –