__dict__
是类型的一个dictproxy
对象,只能读取。我想知道它的目的是什么。它只是用于“不允许修改内置类型”吗?我找到了一种方法来绕过这个限制。我知道修改内置类型不是一个好主意,但我正在尝试在运行时修改Cython的cdef class
。
我想知道这样修改cdef class
的__dict__
是否存在任何危险?
下面是代码:
import gc
gc.get_referents(float.__dict__)[0]["square"] = lambda self: self*self
(3.14).square()
setattr
不能用于内置类。我想要做的是修改Cython中cdef class
的__dict__
。 - HYRYPyTypeObject
插槽进行同步特殊方法(update_slot
)或清除方法缓存(PyType_Modified
)。我不知道“cdef class”,但Python 3稳定的API有PyType_FromSpec
,可以创建扩展堆类型,并可通过正常设置属性而不是黑客类字典来安全地进行修改。 - Eryk Sun_tkinter.Tcl_Obj
是一个 Python 3 扩展类型的示例,它允许您设置属性。 - Eryk Sun