क्षमा करें यदि यह प्रश्न पहले ही उठाया गया है और उत्तर दिया गया है। मुझे क्या करना है अवधारणा में बहुत आसान है, लेकिन दुर्भाग्य से मैं इसके लिए ऑनलाइन जवाब नहीं ढूंढ पाया।कस्टम नामों के साथ पायथन गतिशील फ़ंक्शन निर्माण
मुझे रनटाइम पर कस्टम नामों के साथ पायथन (पायथन 2.7) में गतिशील फ़ंक्शन बनाने की आवश्यकता है। प्रत्येक समारोह के शरीर को रनटाइम पर भी निर्माण करने की आवश्यकता होती है लेकिन यह सभी कार्यों के लिए (लगभग) समान होती है।
मैं नामों की एक सूची के साथ शुरू करता हूं।
func_names = ["func1", "func2", "func3"]
ध्यान दें कि FUNC_NAME सूची, मनमाने ढंग से नामों की सूची पकड़ इतना नाम बस func1, func2, func3 नहीं किया जाएगा कर सकते हैं, ....
मैं परिणाम होना चाहते हैं:
def func1(*args):
...
def func2(*args):
...
def func3(*args):
...
मुझे ऐसा करने की आवश्यकता है कि प्रत्येक फ़ंक्शन का नाम एक परीक्षण मामले से मेल खाता है जिसे बाद में बाहरी दुनिया से बुलाया जाता है।
अद्यतन: कोई उपयोगकर्ता इनपुट नहीं है। मैं एक बहुत बड़े मॉड्यूल के दो सिरों को बांध रहा हूँ। एक अंत निर्धारित करता है कि परीक्षण के मामले क्या हैं और अन्य चीजों के साथ, परीक्षण मामलों के नामों की एक सूची पॉप्युलेट करता है। दूसरा अंत कार्य स्वयं है, जिसमें टेस्ट केस के नाम से 1: 1 मैपिंग होना चाहिए। तो मेरे पास टेस्ट केस का नाम है, मुझे पता है कि मैं प्रत्येक टेस्ट केस के साथ क्या करना चाहता हूं, मुझे सिर्फ उन कार्यों को बनाने की ज़रूरत है जिनके पास टेस्ट केस हैं। चूंकि टेस्ट केस का नाम रनटाइम पर निर्धारित होता है, इसलिए उन परीक्षण मामलों के आधार पर फ़ंक्शन निर्माण रनटाइम पर भी होना चाहिए।
अद्यतन: मैं इस कस्टम नामित कार्यों को कक्षा में भी लपेट सकता हूं यदि इससे चीज़ें आसान हो जाएंगी।
मैं स्ट्रिंग में फ़ंक्शंस की सामग्री को हार्ड-कोड कर सकता हूं (क्योंकि वे लगभग समान हैं), या मैं पहले परिभाषित बेस क्लास से इसे आधार कर सकता हूं। बस इस सामग्री के साथ कार्यों को पॉप्युलेट करने के बारे में जानने की जरूरत है।
उदाहरण के लिए:
func_content = """
for arg in args:
print arg
"""
अग्रिम धन्यवाद,
महदी
कोई उपयोगकर्ता इनपुट है यहाँ एक उदाहरण है कि एक वर्ग पर तरीकों को परिभाषित करता है। मैं एक बहुत बड़े मॉड्यूल के दो सिरों को बांध रहा हूँ। एक अंत निर्धारित करता है कि परीक्षण के मामले क्या हैं और अन्य चीजों के साथ, परीक्षण मामलों के नामों की एक सूची पॉप्युलेट करता है। दूसरा अंत कार्य स्वयं है, जिसमें टेस्ट केस के नाम से 1: 1 मैपिंग होना चाहिए। तो मेरे पास टेस्ट केस का नाम है, मुझे पता है कि मैं प्रत्येक टेस्ट केस के साथ क्या करना चाहता हूं, मुझे सिर्फ उन कार्यों को बनाने की ज़रूरत है जिनके पास टेस्ट केस हैं। चूंकि टेस्ट केस का नाम रनटाइम पर निर्धारित होता है, इसलिए उन परीक्षण मामलों के आधार पर फ़ंक्शन निर्माण रनटाइम पर भी होना चाहिए। – mahdiolfat