मुझे एक सदस्य फ़ंक्शन के साथ एक सी ++ क्लास मिला है जो छोटे-से-बड़े पैरामीटर ले सकता है। आइए उन पैरामीटरों को नाम दें, ए-एफ। सभी पैरामीटर में डिफ़ॉल्ट मान हैं। पायथन परियोजना के एक हिस्से के रूप में मैं काम कर रहा हूं, मैं इस वर्ग को पायथन में बेनकाब करना चाहता हूं।बूस्ट :: पायथन- स्वचालित रूप से dict -> std :: map से कनवर्ट करना संभव है?
class myClass {
public:
// Constructors - set a-f to default values.
void SetParameters(std::map<std::string, double> &);
private:
double a, b, c, d, e, f;
}
void myClass::SetParameters(std::map<std::string, double> const& params) {
// Code to iterate over the map, and set any found key/value pairs to their
// corresponding variable. i.e.- "a" --> 2.0, would set myClass::a to 2.0
}
आदर्श रूप में, पायथन में, मैं एक dict का उपयोग कर इसे पूरा करना चाहते हैं:
>>> A = myModule.myClass();
>>> A.SetParameters({'a': 2.2, 'd': 4.3, b: '9.3'})
इस तरह, उपयोगकर्ता मूल्यों में प्रवेश कर सकता है वर्तमान में, सदस्य समारोह कुछ इस तरह दिखता किसी भी आदेश, और उनमें से किसी भी संख्या में अधिक से अधिक सवार होने के लिए दर्ज करें। बूस्ट :: पायथन में यह कैसे पूरा किया जा सकता है इस पर कोई विचार? ऐसा लगता है कि मैं नक्शा इनपुट को बूस्ट :: पायथन ऑब्जेक्ट में बदलने और निकालने के कार्यों का उपयोग करके ऐसा कर सकता हूं। हालांकि, मुझे मेरी लाइब्रेरी के इंटरफेस को बदलने की आवश्यकता होगी (मैं std :: मैप इंटरफेस रखना पसंद करूंगा, और पाइथन संस्करण के लिए कुछ मध्यस्थ/ऑटो रूपांतरण तकनीक रखूंगा)। विचार?
@ एलेक्सी- कीवर्ड तर्क विधि किस चीज के लिए इष्टतम दिखती है मैं करना चाहता हूं। हालांकि, मुझे आपके द्वारा पोस्ट किए गए कोड के साथ कुछ समस्याएं आ रही हैं। ऐसा लगता है कि raw_function केवल निर्दिष्ट फ़ंक्शन को टुपल और एक इनपुट के रूप में पसंद करता है। क्या क्लास सदस्य फ़ंक्शंस के लिए एक अलग, समान निर्माण है – MarkD
ओह, मुझे लगता है। मुझे लगता है कि मुझे उस रैपर वर्ग का उपयोग करके मिल गया है जो कक्षा से विरासत में आता है जिसे मैं लपेटने की कोशिश कर रहा हूं। –
भी, तर्क टुपल में पहला तर्क आपकी कक्षा का संदर्भ होना चाहिए। कहां स्वयं तर्क छोड़ सकते हैं और myClass निकालें और तर्क से [0]। देखें कि क्या यह काम करता है। –