2017-01-28 3 views
1

次のような場合、変数のうちのいくつかだけが型宣言されたクラスで型宣言されているかどうか不思議です。この場合、クラスが無効になる前にcdefとなりますか?cdefクラスは(型宣言されていない)変数を格納できますか?

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 

これは非常に効率的ではないだろうが、それは動作します:

あなたはいつも(のpython)オブジェクトとしてそれを宣言することができます。

関連する問題