Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

मौजूदा पायथन क्लास में C मेथड कैसे जोड़ें?


यह मेथड दिखाता है कि C एक्सटेंशन मॉड्यूल से एक नई पायथन क्लास कैसे परिभाषित करें। क्लास के मेथड्स C में लागू किए गए हैं, लेकिन क्लास को अभी भी पायथन से इंस्टेंशिएट, सबक्लास और विस्तारित किया जा सकता है। विरासत के साथ यही तकनीक मौजूदा पायथन क्लास को C में लिखे गए मेथड्स के साथ विस्तारित करने के लिए भी उपयोग की जा सकती है। इस तकनीक में, PyClass_New का पहला आर्गुमेंट NULL पास किया जाता है, यह दिखाते हुए कि नई क्लास का कोई बेस क्लास नहीं है। फिर हम इस स्थान पर बेस क्लासेस का टपल पास करते हैं, और हमें सामान्य पायथन विरासत व्यवहार मिलता है, भले ही हमारी नई क्लास पायथन सोर्स कोड के बजाय C एक्सटेंशन में बनाई जा रही हो।

उदाहरण

#include \nstatic PyObject* Foo_init(PyObject *self, PyObject *args) {\n    printf("Foo.__init__ called\\n");\n    Py_INCREF(Py_None);\n    return Py_None;\n}\nstatic PyObject* Foo_doSomething(PyObject *self, PyObject *args) {\n    printf("Foo.doSomething called\\n");\n    Py_INCREF(Py_None);\n    return Py_None;\n}\nstatic PyMethodDef FooMethods[] = {\n    {"__init__", Foo_init, METH_VARARGS, "doc string"},\n    {"doSomething", Foo_doSomething, METH_VARARGS, "doc string"},\n    {0, 0},\n};\nstatic PyMethodDef ModuleMethods[] = {\n    {0, 0}\n};\n#ifdef __cplusplus\nextern "C"\n#endif\nvoid initFoo() {\n    PyMethodDef *def;\n    /* नया मॉड्यूल और क्लास ऑब्जेक्ट बनाएं */\n    PyObject *module = Py_InitModule("Foo", ModuleMethods);\n    PyObject *moduleDict = PyModule_GetDict(module);\n    PyObject *classDict = PyDict_New();\n    PyObject *className = PyString_FromString("Foo");\n    PyObject *fooClass = PyClass_New(NULL, classDict, className);\n    PyDict_SetItemString(moduleDict, "Foo", fooClass);\n    Py_DECREF(classDict);\n    Py_DECREF(className);\n    Py_DECREF(fooClass);\n    /* क्लास में मेथड्स जोड़ें */\n    for (def = FooMethods; def->ml_name != NULL; def++) {\n        PyObject *func = PyCFunction_New(def, NULL);\n        PyObject *method = PyMethod_New(func, NULL, fooClass);\n        PyDict_SetItemString(classDict, def->ml_name, method);\n        Py_DECREF(func);\n        Py_DECREF(method);\n    }\n}
  1. - C# में क्लास के मेथड को कैसे कॉल करें

    किसी मेथड को कॉल करने के लिए, ऑब्जेक्ट नाम के बाद मेथड के नाम का उपयोग करें, उदाहरण के लिए, - obj1.Display(); मान लें क्लास नाम ApplicationOne है, तो मेथड को कॉल करने के लिए - ApplicationOne one = new ApplicationOne(); //calling the displayMax method ret = one.displayMax(a, b); निम्नलिखित उदाहरण C#

  1. Python में ROC कर्व कैसे प्लॉट करें? Python में ROC कर्व कैसे प्लॉट करें?

    ROC - Receiver operating characteristics (ROC) कर्व। metrics.plot_roc_curve(clf, X_test, y_test) मेथड का उपयोग करके, हम ROC कर्व बना सकते हैं। चरण एक रैंडम n-क्लास वर्गीकरण समस्या उत्पन्न करें। यह प्रारंभ में सामान्य रूप से वितरित बिंदुओं के क्लस्टर बनाता है (std=1) ``n_informative``-आयामी हाइपरक्

  1. - पायथन नेमस्पेस कैसे बनाएं?

    प्रत्येक पैकेज, मॉड्यूल, क्लास, फ़ंक्शन और मेथड फ़ंक्शन का एक नेमस्पेस होता है जिसमें वेरिएबल नेम रिज़ॉल्व होते हैं। जब कोई फ़ंक्शन, मॉड्यूल या पैकेज मूल्यांकन किया जाता है (यानी, निष्पादन शुरू होता है), तो एक नेमस्पेस बनाया जाता है। इसलिए यदि आप नेमस्पेस बनाना चाहते हैं, तो आपको बस एक फ़ंक्शन कॉल