python attributes cython

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.