क्या यह पाइथन में एक अच्छा अभ्यास है (Active State Recipes -- Public Decorator से)?क्या सजावट का उपयोग कर __all__ में नाम जोड़ने का अच्छा अभ्यास है?
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
सामान्य विचार एक डेकोरेटर कि एक समारोह या वर्ग लेता है और वर्तमान मॉड्यूल के __all__
के लिए इसका नाम कहते हैं परिभाषित करने के लिए किया जाएगा।
शीर्षक फिक्स्ड, के रूप में कुछ लोगों को –
ने बताया कि यह एक अच्छा विचार की तरह लगता है, मुझे लगता है कि यह मेरे आईडीई (PyCharm 2016/01/04), जो ज्यादातर उद्देश्य धरा confuses। पर्याप्त आईडीई समर्थन देखते हुए, मैं इसका इस्तेमाल करूंगा। –
इस डेकोरेटर 100% बुलेट प्रूफ हो रही कठिन प्रतीत होता है: देखें [अजगर बग # 26,632] (https://bugs.python.org/issue26632) और [ 'atpublic' मॉड्यूल] (https: // pypi। python.org/pypi/atpublic) ने उल्लेख किया है। – kostix