我很好奇以下内容是否有效,其中只有一些变量是在类型声明的类中进行类型声明的。也就是说,在这种情况下,类之前的cdef是否无效?

cdef class CythonClass:

    cdef int var1, var2

    def __init__(self, a, b):
        self.var1 = a
        self.var2 = b
        self.defaultdict = DefaultDict(DefaultDict([]))

最佳答案

简短答案:

不,您需要声明它。否则,将出现AttributeError: 'xxx.CythonClass' object has no attribute 'defaultdict'错误。

(略)更长的答案:

您始终可以将其声明为(python)对象:

cdef class CythonClass(object):

    cdef int var1, var2
    cdef object defaultdict  # declared as python object


这不是很有效,但是可以。

09-26 14:39