Cython问题,不能在类变量上使用cdef [关闭]

von4xj4u  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(145)

已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
三年前就关门了。
Improve this question
我正在尝试使用Cython将一个python类转换为C以改善时间复杂度。我最常用的变量是在init方法中定义的类变量,因此我想将它们定义为cdef double。我已经尝试了一切我可以找到,但没有让我转换代码.似乎应该这样做:

class Wall(object):

cdef double min_x, max_x, a, b, c

def __init__(self, start, stop):
    self.min_x = min(start[0], stop[0])
    self.max_x = max(start[0], stop[0])
    self.a = (stop[1]-start[1])/(stop[0]-start[0])
    self.b = -1
    self.c = start[1]-self.a*start[0]

但我得到以下错误:

Error compiling Cython file:
------------------------------------------------------------
...

class Wall(object):

    cdef double min_x, max_x, a, b, c
        ^
------------------------------------------------------------

wall_class_cy.pyx:9:9: cdef statement not allowed here

我做错了什么?

ndasle7k

ndasle7k1#

你需要将类变量设为公共变量,并为类提供一个C声明。试试这个:

cdef class Wall(object):

    cdef public double min_x, max_x, a, b, c

    def __init__(self, start, loop):
        ...

相关问题