[C++-sig] Check number of arguments of a function object ?

Stefan Seefeld seefeld at sympatico.ca
Wed Feb 20 15:31:10 CET 2008

Marcus Jannes wrote:
> Hi again,
> if i have a callable function object (PyObject*), how can i check the number of arguments this object has?
> PyArg_ParseTuple does not seem to accomplish this.

(You keep asking questions about the Python C API. There must be other 
lists about that. This list is about Python <-> C++ integration, and in 
particular, boost.python. Please do yourself a favor and try using that.)

> def f(x): <- 1 argument
> def f(x,y): <- 2 arguments

What you mean here is 'parameter', not 'argument'. (A function parameter 
is part of the function's definition, while and argument is what gets 
passed to a function call.)

Also, what about

def f(x, y=None): pass

? The function has two parameters, but it is valid to call it with 
either one or two arguments. Further, inside the function implementation 
(no matter whether Python, C, or C++), you don't know whether an 
argument was actually passed or is a default value.

> I want to make sure only functions with one argument get processed.

Can you rephrase that ? Do you mean 'function calls' instead of 
'functions' ? And what do you mean by 'get processed' ? In particular, 
what should happen when there are multiple arguments ? Should they get 
ignored ? An exception raised ?

You may be interested into


but it isn't clear from your description whether that is what you are after.



       ...ich hab' noch einen Koffer in Berlin...

More information about the Cplusplus-sig mailing list