gitulyar wrote:
On Apr 17, 5:23 pm, Scott David Daniels <scott.dani...@acm.org> wrote:
Marco Mariani wrote:
Piet van Oostrum wrote:
funclist = [func01, func02, func03, ... ]
for i in range(1,n):
    funclist[i]()
Or myscript.funclist[i]() from another module.
...
For example, you could do it like:
     funclist = []
     def _included(function):
         funclist.append(function)
         return function

     @_included
     def func01():
     ...
     def call_all():
         for function in funclist:
             function()

--Scott David Daniels
scott.dani...@acm.org

This code does the same as '__all__' should, but anyway it's
the ugly way, because you have to edit '__all__' every time
you add/remove new functions to your module and if '__all__'
is absent your code won't work.

As for me the best solution is to use 'dir()':

    for func in dir(myscript):
        if match(func):
            getattr(myscript, func)()

Well, I prefer that the names of the functions not matter, (that
renaming a function not change the behavior of a program).  And if
you are not going by name, how do you refactor the functions that
you do want to call (and lift common behavior to a function).
It really does come down to style, and I like to avoid using
function names as the way to discover functions.  I put up with
the naming convention for testing, but I don't like it.  The only
excuse I see is that there are often a huge number of tests, and
there _is_ a convention for such names as defined by the xUnit style.
If we were starting from scratch now, I'd argue for a @test decorator.

--Scott David Daniels
scott.dani...@acm.org

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to