سؤال

لقد نفذت فئة في C++.أريد أن استخدامه مع بيثون.يرجى توحي خطوة خطوة طريقة وشرح كل خطوة. شيء مثل هذا...

class Test{
     private:
        int n;
     public:
        Test(int k){
            n=k;
        }
        void setInt(int k){
            n = k; 
        }
        int getInt(){
            return n;
        }
};

الآن في بايثون

>>> T1 = Test(12)
>>> T1.getInt()
12
>>> T1.setInt(32)
>>> T1.getInt()
32

يرجى اقتراح.كيف يمكن أن أفعل هذا ؟ ملاحظة:أود أن أعرف الطريقة اليدوية للقيام بذلك.أنا لا أريد أي طرف ثالث مكتبة التبعية.

هل كانت مفيدة؟

المحلول

ننظر إلى دفعة.بيثون.انها مكتبة لكتابة وحدات بيثون مع C++.

ننظر أيضا إلى جرعة كبيرة والتي يمكن أيضا التعامل مع وحدات أخرى من لغات البرمجة.لقد استعملت في الماضي لكتابة وحدات صفي واستخدامها في بيثون.يعمل كبيرة.

يمكنك أن تفعل ذلك يدويا باستخدام بيثون/C API, الكتابة على واجهة نفسك.انها جميلة lowlevel ، ولكن سوف تكسب الكثير من معارف إضافية عن كيفية بايثون يعمل خلف الكواليس (و أنك سوف تحتاج إليها عند استخدام جرعة كبيرة على أي حال).

نصائح أخرى

ctypes هو جيد.هو حقا سهلة الاستخدام ، فإنه يأتي معيار مع بيثون.للأسف لا يمكن أن نتحدث فقط إلى المكتبات المشتركة (Unix) أو DLLs (Windows) التي لها ج-نمط واجهة, مما يعني أنك لا يمكن أن واجهة مباشرة إلى الكائن C++.ولكن هل يمكن استخدام مقبض النظام حيث المقبض يشير إلى كائن معين.

>>> getInt(h)
12

أعتقد أن هذا هو بسيطة وسهلة الفهم, و لا تتطلب المزيد من المكتبات.

أود أن أقترح عليك محاولة جرعة كبيرة أو تناول (KDE/PyQt).

رشفة الرابط : http://www.swig.org/
رشفة الرابط: http://freshmeat.net/projects/python-sip/

هذه يمكن استخدامها للالتفاف C++ الطبقات وتوفير Pythonic واجهة لهم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top