मेरे पास एक पायथन फ़ंक्शन है जो कई तर्क देता है। इनमें से कुछ तर्कों को कुछ परिदृश्यों में छोड़ा जा सकता है।
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
के d
माध्यम से तर्क h
तार हैं जो प्रत्येक के अलग-अलग अर्थ हैं। यह महत्वपूर्ण है कि मैं किसी भी संयोजन में पास करने के लिए कौन से वैकल्पिक पैरामीटर चुन सकता हूं। उदाहरण के लिए, (a, b, C, d, e)
या (a, b, C, g, h)
, या (a, b, C, d, e, f
, या उनमें से सभी (ये मेरी पसंद हैं)।
यह बहुत अच्छा होगा यदि मैं फ़ंक्शन को अधिभारित कर सकता हूं - लेकिन मैंने पढ़ा कि पायथन ओवरलोडिंग का समर्थन नहीं करता है। मैंने सूची में कुछ आवश्यक int तर्कों को सम्मिलित करने की कोशिश की - और एक तर्क बेमेल त्रुटि पाई।
अभी मैं पहले कुछ लापता तर्कों के स्थान पर खाली तार भेज रहा हूँ। मैं वास्तविक मूल्यों का उपयोग करके एक फ़ंक्शन को कॉल करने में सक्षम होना चाहूंगा।
क्या इसे करने का कोई तरीका है? क्या मैं तर्क सूची के बजाय सूची पास कर सकता था?
अभी ctypes का उपयोग करने वाला प्रोटोटाइप कुछ इस तरह दिखता है:
_fdll.some_function.argtypes = [c_void_p, c_char_p, c_int, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p]