2009-10-25 15 views
8

हमारा ढांचा कुछ बदसूरत बॉयलरप्लेट कोड में कुछ कार्यों लपेटकर की आवश्यकता करने के लिए कार्यों को जोड़ने बल्कि मुश्किल होने के लिए, मुख्य रूप से ढांचा मॉड्यूल स्तर पर फ़ंक्शन नामों के एक निश्चित पैटर्न की तलाश करता है।गतिशील रूप से एक पायथन मॉड्यूल

मैं डेकोरेटर के भीतर निम्नलिखित की कोशिश की है, कोई लाभ नहीं हुआ:

current_module = __import__(__name__) 
new_name = prefix + func.__name__ + suffix 
# method A 
current_module[new_name] = func 
# method B 
func.__name__ = new_name 
current_module += func 

किसी भी मदद की सराहना की होगी!

+1

आपको यह बताने की जरूरत है कि इन नामों में ढांचे को "और" कैसे दिखता है और थोड़ा और अच्छी तरह से। आप शायद __getattr__ को ओवरराइड कर सकते हैं या अपने मॉड्यूल के अपने शब्दकोश को नकली में घुमा सकते हैं, लेकिन इस बिंदु पर निश्चित रूप से कहना असंभव है। –

+0

मैं ईमानदारी से नहीं जानता कि वास्तव में ढांचा क्या करता है। ओरेन के छोटे अनुस्मारक की मुझे आवश्यकता थी। – AnC

उत्तर

13

उपयोग या तो

current_module.new_name = func 

या

setattr(current_module, new_name, func) 
+0

ड्यूह, ज़ाहिर है - मैं क्या सोच रहा था ... धन्यवाद! – AnC

0

ऐसा लगता है आपकी समस्या का हल मूल समारोह के रूप में सजाया समारोह अधिनियम बनाने के लिए किया जाएगा।

मुड़, यहां पाया से समारोह mergeFunctionMetadata उपयोग करके देखें: twisted/python/util.py

यह मूल रूप में अपने सजाया समारोह कार्य करता है उम्मीद है कि बनाने ढांचे यह लेने अप।

+0

धन्यवाद, यह दिलचस्प लग रहा है - इसे देखना होगा कि इसे कैसे लागू किया जाए। – AnC

संबंधित मुद्दे