Хммм .... Я думаю, что hasattr
и callable
будет самым простым способом достижения той же цели:
class Fun:
def hello(self):
print 'Hello'
hasattr(Fun, 'hello') # -> True
callable(Fun.hello) # -> True
Конечно, вы можете позвонить callable(Fun.hello)
из набора обработки исключений:
try:
callable(Fun.goodbye)
except AttributeError, e:
return False
Что касается самоанализа на количество требуемых аргументов; Я думаю, что это будет иметь сомнительную ценность для языка (даже если он существует в Python), потому что это ничего не скажет вам о требуемой семантике. Учитывая простоту, с которой можно определять необязательные / заданные по умолчанию аргументы, а также функции и методы переменных аргументов в Python, кажется, что знание «необходимого» количества аргументов для функции будет иметь очень небольшое значение (с программной / интроспективной точки зрения).