Lacrima wrote:
class First:
        def __init__(self, *args, **kwargs):
                pass

class Second:
        def __init__(self, somearg, *args, **kwargs):
                self.somearg = somearg

How can I test that First class takes 1 required argument and Second
class takes no required arguments?


Sorry, I have made a mistake. Of course, Second class takes 1 required
argument, not First.

Of course, it is possible to just try it one-by-one with a try block and a while loop (as long as your class/function doesn't rely/change on some global state (e.g. files, global variable, GUI, etc) while initializing/called), but if you really need that, there is something seriously wrong with the class/function design. You should check the help and determine how many and what are all the arguments meant.

In case you're wondering, this is how it would look like:

>>> def f0():
...     print
...
>>> def f1(a):
...     print a
...
>>> def f2(a, b):
...     print a, b
...
>>> def f2a(a, b, *args, **kargs):
...     print a, b, args, kargs
...
>>> import itertools
>>> funclist = [f0, f1, f2, f2a]
>>> for f in funclist:
...     for i in itertools.count():
...         try:
...             f(*range(i))
...         except TypeError:
...             pass
...         else:
... print 'Function %s takes %s required arguments' % (f.__name__, i)
...             break
...

Function f0 takes 0 required arguments
0
Function f1 takes 1 required arguments
0 1
Function f2 takes 2 required arguments
0 1 () {}
Function f2a takes 2 required arguments
>>>
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to