python - هل يمكن لصنف كديف تخزين متغير غير(نوع) تم الإعلان عنه؟



attributes cython (1)

اجابة قصيرة:

لا، تحتاج إلى إعلان ذلك. وإلا، ستحصل على AttributeError: 'xxx.CythonClass' object has no attribute 'defaultdict' خطأ AttributeError: 'xxx.CythonClass' object has no attribute 'defaultdict' .

(قليلا) أطول الجواب:

يمكنك دائما أن تعلن أنه كائن (الثعبان):

cdef class CythonClass(object):

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

هذا لن يكون فعالا جدا، ولكنه يعمل.

أنا غريبة إذا كان ما يلي صحيحا، حيث فقط بعض المتغيرات هي نوع أعلن في فئة أعلن نوع. وهذا يعني، هل cdef قبل أن يكون الصف غير صالح في هذه الحالة؟

cdef class CythonClass:

    cdef int var1, var2

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




cython