On 07/29/2011 08:37 AM, Thomas Rachel wrote:
Am 28.07.2011 20:01 schrieb Ian Kelly:

The advantage of Thomas's decorator here is that it lets you place the
denotation of whether a function is exported alongside its definition,
whereas simply declaring the __all__ list forces you to separate them.
  It also avoids the problem of possibly mistyping the function's name
in the list.

Thank you. For the ones who do not like @__all__ because it might look ugly, here is an alternative:

__all__ = []

def export(obj):
    __all__.append(obj.__name__)
    return obj

It is nearly the same, but without an extra class and with the more readable

@export
def func(): pass


Thomas

I did not plan that this topic introduce so many great ideas.
It started from a simple question and ended up with new
and beautiful solution.
Very pleased of the collective spirit of this mailing list.
It changed from non-sense verbal fightings I saw earlier in some discussions
like perl versus python related topic.

Karim

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

Reply via email to