Я бы хотел узнать арность метода в Python (количество получаемых им параметров). Прямо сейчас делаю вот что:
def arity(obj, method):
return getattr(obj.__class__, method).func_code.co_argcount - 1 # remove self
class Foo:
def bar(self, bla):
pass
arity(Foo(), "bar") # => 1
Я бы хотел добиться этого:
Foo().bar.arity() # => 1
Обновление: сейчас вышеуказанная функция не работает со встроенными типами, любая помощь по этому поводу также приветствуется:
# Traceback (most recent call last):
# File "bla.py", line 10, in <module>
# print arity('foo', 'split') # =>
# File "bla.py", line 3, in arity
# return getattr(obj.__class__, method).func_code.co_argcount - 1 # remove self
# AttributeError: 'method_descriptor' object has no attribute 'func_co
def a( *args ):
? - person S.Lott   schedule 14.06.2009