আমার একটি পাইথন ফাংশন রয়েছে যা বেশ কয়েকটি যুক্তি দেয়। এর মধ্যে কিছু যুক্তি কিছু পরিস্থিতিতে বাদ দেওয়া যেতে পারে।
def some_function (self, a, b, c, d = None, e = None, f = None, g = None, h = None):
#code
আর্গুমেন্টগুলির d
মাধ্যমে h
স্ট্রিংগুলি রয়েছে যার প্রতিটিটির আলাদা অর্থ রয়েছে। এটি গুরুত্বপূর্ণ যে আমি কোনও সংমিশ্রণে কোন alচ্ছিক পরামিতিগুলি পাস করতে পারি তা চয়ন করতে পারি। উদাহরণস্বরূপ, (a, b, C, d, e)
বা (a, b, C, g, h)
, বা (a, b, C, d, e, f
, বা তাদের সমস্ত (এগুলি আমার পছন্দ)।
আমি যদি ফাংশনটি ওভারলোড করতে পারি তবে দুর্দান্ত হবে - তবে আমি পড়েছি পাইথন ওভারলোডিং সমর্থন করে না। আমি তালিকায় প্রয়োজনীয় কিছু অন্তর্নিহিত যুক্তি সন্নিবেশ করানোর চেষ্টা করেছি - এবং একটি যুক্তি অমিল ত্রুটি পেয়েছি।
এই মুহূর্তে আমি স্থানধারক হিসাবে প্রথম কয়েকটি অনুপস্থিত যুক্তিগুলির জায়গায় খালি স্ট্রিং প্রেরণ করছি। আমি কেবল আসল মান ব্যবহার করে একটি ফাংশন কল করতে সক্ষম হতে চাই।
এই কাজ করতে কোন উপায় আছে কি? আমি কি যুক্তি তালিকার পরিবর্তে একটি তালিকা পাস করতে পারি?
এই মুহুর্তে সিটিপস ব্যবহার করে প্রোটোটাইপটি দেখতে এমন কিছু দেখাচ্ছে:
_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]