python - ¿Puede una clase cdef almacenar una variable que no está(tipo-) declarada?
attributes cython (1)
Tengo curiosidad si lo siguiente es válido, donde solo algunas de las variables están declaradas por tipo en una clase de tipo declarado. Es decir, ¿sería cdef
antes de que la clase fuera inválida en este caso?
cdef class CythonClass:
cdef int var1, var2
def __init__(self, a, b):
self.var1 = a
self.var2 = b
self.defaultdict = DefaultDict(DefaultDict([]))
Respuesta corta:
No, debes declararlo. De lo contrario, obtendrás un AttributeError: ''xxx.CythonClass'' object has no attribute ''defaultdict''
.
(ligeramente) respuesta más larga:
Siempre puedes declararlo como objeto (python):
cdef class CythonClass(object):
cdef int var1, var2
cdef object defaultdict # declared as python object
Esto no será muy eficiente, pero funciona.