cdef类是否可以存储未声明(type-)的变量?

时间:2017-01-28 00:20:24

标签: python attributes cython

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

cdef class CythonClass:

    cdef int var1, var2

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

1 个答案:

答案 0 :(得分:1)

简答:

不,你需要申报。否则,您将收到AttributeError: 'xxx.CythonClass' object has no attribute 'defaultdict'错误。

(略)更长的回答:

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

cdef class CythonClass(object):

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

这不会很有效,但它有效。