2017-01-28 9 views
1

Мне интересно, допустимо ли следующее: только некоторые из переменных объявляются в объявленном типом классе. То есть, будет cdef до того, как класс окажется недействительным в этом случае?Может ли класс cdef хранить переменную, которая не объявлена ​​(type-)?

cdef class CythonClass: 

    cdef int var1, var2 

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

ответ

1

Короткий ответ:

Нет, вы должны объявить его. В противном случае вы получите сообщение об ошибке AttributeError: 'xxx.CythonClass' object has no attribute 'defaultdict'.

(немного) больше ответ:

Вы всегда можете объявить его как (питон) объекта:

cdef class CythonClass(object): 

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

Это не будет очень эффективным, но это работает.

 Смежные вопросы

  • Нет связанных вопросов^_^