द्वारा उजागर एक enum पिकलिंग क्या Boost.Python के साथ उजागर किया गया है कि एक enum चुनने (सीपीकल का उपयोग कर) संभव है? मैंने here वर्णित पहली विधि का उपयोग करके सफलतापूर्वक अन्य ऑब्जेक्ट्स को चुना है, लेकिन इनमें से कोई भी एनम प्रकार के लिए लागू नहीं होता है, और ऑब्जेक्ट डिफ़ॉल्ट रूप से अस्थिर प्रतीत नहीं होता है।Boost.Python
उत्तर
जैसा कि वे मॉड्यूल में नहीं हैं। मुझे यह समझने के लिए दिया गया है कि यह संभव होने के लिए तैयार है, लेकिन जिस तरह से enum_ कथन काम करता है इसे रोकता है।
आप पाइथन पक्ष पर इसके आसपास काम कर सकते हैं।
import yourmodule
def isEnumType(o):
return isinstance(o, type) and issubclass(o,int) and not (o is int)
def _tuple2enum(enum, value):
enum = getattr(yourmodule, enum)
e = enum.values.get(value,None)
if e is None:
e = enum(value)
return e
def _registerEnumPicklers():
from copy_reg import constructor, pickle
def reduce_enum(e):
enum = type(e).__name__.split('.')[-1]
return (_tuple2enum, (enum, int(e)))
constructor(_tuple2enum)
for e in [ e for e in vars(yourmodule).itervalues() if isEnumType(e) ]:
pickle(e, reduce_enum)
_registerEnumPicklers()
यह सब कुछ अचार ठीक कर देगा: कहीं (शायद एक __init__.py फ़ाइल में) कुछ इस तरह से करते हैं।
मुझे पाइथन 2.7.3 के लिए क्लास स्कोप के अंदर परिभाषित enums के लिए इस समस्या का सामना करना पड़ा। मैंने मैन्युअल रूप से जोड़ा: अचार (my_module.my_class.my_enum, reduce_enum), और यह काम किया। मैंने enum प्रकारों के ऑटो डिटेक्शन को हटा दिया - शीर्ष स्तर के enums के pickling तय किया गया प्रतीत होता है। –
यह जानना अच्छा है। धन्यवाद। मैंने बीपी के साथ कई सालों से काम नहीं किया है, इसलिए मैं नवीनतम पर नहीं हूं। –
- 1. boost.python
- 2. Boost.Python
- 3. Boost.Python
- 4. Boost.Python: एक लिपटे सी ++ ऑब्जेक्ट
- 5. अजगर सेल्सियस तक ++ समारोह Boost.Python
- 6. Boost.Python कैसे काम करता है?
- 7. Boost.Python - संदर्भ द्वारा वापस कैसे करें?
- 8. boost.python समानांतरता का समर्थन नहीं कर रहा है?
- 9. Boost.Python: एक वर्ग के बाहर एक कन्स्ट्रक्टर परिभाषित
- 10. Boost.Python को कच्चे सूचक को कैसे पास किया जाए?
- 11. Boost.Python के साथ एक पायथन मेटाक्लास को परिभाषित करने के लिए कैसे?
- 12. कैसे boost.python के साथ एक यूनिकोड स्ट्रिंग को निकालने के लिए
- 13. Boost.Python संदर्भ द्वारा कॉल करें: TypeError: C++ प्रकार के लिए कोई to_python (by-value) कनवर्टर नहीं मिला:
- 14. कोई नहीं
- 15. सी ++
- 16. मैं सी ++ में पाइथन के कीबोर्ड इंटरप्ट को कैसे पास/पकड़/प्रतिक्रिया दे सकता हूं?
- 17. मौजूदा बूस्ट पायथन मॉड्यूल से लिंक कैसे करें
- 18. बूस्ट। पायथन कस्टम अपवाद वर्ग
- 19. बूस्ट बीजेम बनाम जीएनयू
- 20. बढ़ावा :: पायथन निर्यात कस्टम अपवाद
- 21. bjam
- 22. boost.pythr को बूस्ट.pypton
- 23. सीटीपीएस के साथ सी ++ कक्षाओं का उपयोग कैसे करें?
- 24. पायथन के साथ सी (या सी ++) इंटरफेसिंग के लिए अलग-अलग विकल्प क्या हैं?
- 25. बूस्ट। पायथन उदाहरण, विंडोज 7 एक्स 64, "आयात त्रुटि: डीएलएल लोड विफल: निर्दिष्ट मॉड्यूल नहीं मिला।"
- 26. बढ़ावा :: अजगर स्ट्रिंग-परिवर्तनीय गुण
- 27. सी ++ बूस्ट। पायथन: 2 समस्याएं
- 28. बूस्ट पायथन: मॉड्यूल को आयात करने में समस्याएं
- 29. सीपीपी में एम्बेडेड पायथन: सीपीपी
- 30. बूस्ट पायथन लिंकिंग
+1 मैं यह नहीं कर सकता कि यह कैसे करना है, लेकिन बहुत पसंद है! (फिलहाल मैं उन enums को परिवर्तित करता हूं जिन्हें पहले पूर्णांक में चुना जाना चाहिए) – James