¿Es esta una buena práctica en Python (desde Active State Recipes -- Public Decorator)?¿Es una buena práctica agregar nombres a __all__ utilizando un decorador?
import sys
def public(f):
"""Use a decorator to avoid retyping function/class names.
* Based on an idea by Duncan Booth:
http://groups.google.com/group/comp.lang.python/msg/11cbb03e09611b8a
* Improved via a suggestion by Dave Angel:
http://groups.google.com/group/comp.lang.python/msg/3d400fb22d8a42e1
"""
all = sys.modules[f.__module__].__dict__.setdefault('__all__', [])
if f.__name__ not in all: # Prevent duplicates if run from an IDE.
all.append(f.__name__)
return f
public(public) # Emulate decorating ourself
La idea general sería definir un decorador que toma una función o una clase de y añade su nombre a la __all__
del módulo actual.
Se arregló el título, como señalaron algunas personas –
Si bien esto parece una buena idea, me parece que confunde mi IDE (PyCharm 2016.1.4), que en su mayoría frustra el propósito. Dado el soporte adecuado de IDE, lo usaría. –
Obtener este decorador 100% a prueba de balas parece ser más difícil: vea el [error Python # 26632] (https://bugs.python.org/issue26632) y el módulo ['atpublic'] (https: // pypi. python.org/pypi/atpublic) mencionado allí. – kostix