我想知道为什么一个类__dict__
是一个类mappingproxy
,但实例__dict__
只是一个简单的例子dict
>>> class A:
... pass
>>> a = A()
>>> type(a.__dict__)
<class 'dict'>
>>> type(A.__dict__)
<class 'mappingproxy'>
Run Code Online (Sandbox Code Playgroud) 我想通过字符串对象分配一个类属性 - 但是如何?
例:
class test(object):
pass
a = test()
test.value = 5
a.value
# -> 5
test.__dict__['value']
# -> 5
# BUT:
attr_name = 'next_value'
test.__dict__[attr_name] = 10
# -> 'dictproxy' object does not support item assignment
Run Code Online (Sandbox Code Playgroud) 的__dict__
一种类型是一个dictproxy
被只读对象.我想知道它的目的是什么.它仅适用于"不允许修改内置类型"吗?我发现了一种可以绕过它的方法.我知道修改内置类型并不是一个好主意.但我试图cdef class
在飞行中修改Cython.
我想知道是否有任何危险的修改__dict__
的cdef class
这种方式?
这是代码:
import gc
gc.get_referents(float.__dict__)[0]["square"] = lambda self: self*self
(3.14).square()
Run Code Online (Sandbox Code Playgroud)