Using C++ in Cython कुछ भी विशेष उल्लेख नहीं है:
#file: pya.pyx
cdef extern from "a.h":
cdef cppclass A:
int a
cdef cppclass B(A):
int b
आवरण वर्ग:
#file: pya.pyx
cdef class PyB:
cdef B* thisptr
def __cinit__(self):
self.thisptr = new B();
def __dealloc__(self):
del self.thisptr
property a:
def __get__(self): return self.thisptr.a
def __set__(self, int a): self.thisptr.a = a
property b:
def __get__(self): return self.thisptr.b
def __set__(self, int b): self.thisptr.b = b
उदाहरण:
import pyximport; pyximport.install(); # pip install cython
from pya import PyB
o = PyB()
assert o.a == 0 and o.b == 0
o.a = 1; o.b = 2
assert o.a == 1 and o.b == 2
इसे बनाने के लिए आप C++ उपयोग करने के लिए pyximport को निर्देश देने की जरूरत है:
#file: pya.pyxbld
import os
from distutils.extension import Extension
dirname = os.path.dirname(__file__)
def make_ext(modname, pyxfilename):
return Extension(name=modname,
sources=[pyxfilename, "a.cpp"],
language="c++",
include_dirs=[dirname])
मैं सिर्फ संरचना के लिए cppclass का उपयोग कर सकते हैं? यदि ऐसा है, ऐसा लगता है कि मैं कक्षा विरासत कर सकता हूं, और इससे मेरी समस्या हल होनी चाहिए: http://wiki.cython.org/gsoc09/daniloaf/progress#Inheritance – colinmarc
@colinmarc: मैंने इसे साइथन 0.15 पर आजमाया है और यह काम करता है; दस्तावेज़ पुराने संस्करण का वर्णन कर सकते हैं। बड़ी 'संरचना {..}; '' वर्ग {सार्वजनिक: ..}; 'सी ++ में बराबर है। – jfs
आपकी मदद के लिए धन्यवाद! – colinmarc