[Python] How to find out the arity of a method in Python

Discussão em 'Python' iniciado por Stack, Maio 19, 2025.

  1. Stack

    Stack Membro Participativo

    I'd like to find out the arity of a method in Python (the number of parameters that it receives). Right now I'm doing this:

    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


    I'd like to be able to achieve this:

    Foo().bar.arity() # => 1


    Update: Right now the above function fails with built-in types, any help on this would also be appreciated:

    # 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

    Continue reading...

Compartilhe esta Página