आयरनपीथन कक्षा .NET कक्षाएं नहीं हैं। वे IronPython.Runtime.Types.PythonType जो अजगर metaclass है के उदाहरण हैं। ऐसा इसलिए है क्योंकि पाइथन कक्षाएं गतिशील और समर्थन के अतिरिक्त हैं और रनटाइम पर विधियों को हटाने, चीजें जो आप .NET कक्षाओं के साथ नहीं कर सकते हैं।
सी # में पायथन कक्षाओं का उपयोग करने के लिए आपको ऑब्जेक्टऑपरेशंस क्लास का उपयोग करने की आवश्यकता होगी। यह वर्ग आपको भाषा के अर्थशास्त्र में पाइथन प्रकारों और उदाहरणों पर काम करने की अनुमति देता है। जैसे यह उचित होने पर जादू विधियों का उपयोग करता है, लंबे समय तक इंटीग्रेट्स को ऑटो-प्रोमोट करता है। आप स्रोत को देखकर या परावर्तक का उपयोग करके ऑब्जेक्टऑपरेशंस के बारे में अधिक जानकारी प्राप्त कर सकते हैं।
यहाँ एक उदाहरण है।
class Calculator(object):
def add(self, a, b):
return a + b
आप इस तरह अपने पूर्व .NET 4.0 सी # कोड से इसका इस्तेमाल कर सकते हैं::
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromFile("Calculator.py");
ScriptScope scope = engine.CreateScope();
ObjectOperations op = engine.Operations;
source.Execute(scope); // class object created
object klaz = scope.GetVariable("Calculator"); // get the class object
object instance = op.Call(klaz); // create the instance
object method = op.GetMember(instance, "add"); // get a method
int result = (int)op.Call(method, 4, 5); // call method and get result (9)
आप विधानसभाओं IronPython.dll, माइक्रोसॉफ्ट को संदर्भित करने की आवश्यकता होगी Calculator.py एक साधारण वर्ग में शामिल है। स्क्रिप्टिंग और माइक्रोसॉफ्ट .स्क्रिप्टिंग। कोर।
सी # 4 नया गतिशील प्रकार के साथ यह इतना आसान बना दिया।
ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromFile("Calculator.py");
ScriptScope scope = engine.CreateScope();
source.Execute(scope);
dynamic Calculator = scope.GetVariable("Calculator");
dynamic calc = Calculator();
int result = calc.add(4, 5);
आप दृश्य स्टूडियो 2010 या बाद में NuGet समर्थन के साथ प्रयोग कर रहे हैं, तो बस इस पर अमल डाउनलोड करने और उचित लाइब्रेरियों को संदर्भित करने।
Install-Package IronPython
स्रोत
2009-02-23 22:14:43
मेरे पास नहीं है नए गतिशील प्रकार के साथ
सी # 4.0 कोड इस प्रकार है इसे संपादित करने के लिए प्रतिनिधि , लेकिन Calculator.py नमूना में, पहला "def" इंडेंट होना चाहिए। महान उदाहरण है, हालांकि! बहुत उपयोगी। अब .Net 4.0 बाहर है, अपडेटेड उदाहरण देखना अच्छा लगेगा। –
एक नेट 4.0 उदाहरण जोड़ा गया, अपने ही कैलक्यूलेटर नमूना वर्ग का उपयोग कर। –
धन्यवाद, मैंने इंडेंट जोड़ा। –