Я хотел бы узнать арность метода в 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