Cython类AttributeError

时间:2019-03-18 22:00:21

标签: python cython cythonize

我已经开始尝试使用Cython并遇到以下问题。考虑以下表示3D空间中顶点的类:

#Vertex.pyx
cdef class Vertex(object):
    cdef double x, y, z
    def __init__(self, double x, double y, double z):        
        self.x = x
        self.y = y
        self.z = z

现在,我尝试从Python控制台创建一个对象:

import Vertex as vt
v1 = vt.Vertex(0.0, 1.0, 0.0) 

效果很好。但是,当我尝试访问类属性时,我得到了AttributeError

print v1.x
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-6-83d928d774b7> in <module>()
----> 1 print v1.x

AttributeError: 'Vertex.Vertex' object has no attribute 'x'

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:3)

默认情况下,cdef属性只能从Cython内部访问。如果you make it a public attributecdef public一起使用,则Cython将生成合适的属性,以便能够从Python访问它。