我很好奇以下是否有效,其中只有一些变量是在类型声明的类中声明的。也就是说,在这种情况下,课前cdef
会无效吗?
cdef class CythonClass:
cdef int var1, var2
def __init__(self, a, b):
self.var1 = a
self.var2 = b
self.defaultdict = DefaultDict(DefaultDict([]))
答案 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
这不会很有效,但它有效。