在Python中,属性是使用字典实现的:
>>> t = test()
>>> t.__dict__["foo"] = "bla"
>>> t.foo
'bla'
Run Code Online (Sandbox Code Playgroud)
但对于"对象",它使用'dictproxy'作为接口来阻止这种分配:
>>> object.__dict__["test"] = "test"
TypeError: 'dictproxy' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
所以不,你不能.
注意:你也不能直接修改元类型.但由于Python非常灵活,我相信Guru可以找到实现你想要的方法.这附近有黑巫师:-)?
不,Python的内部结构非常谨慎,使内置类型不可变 - 与Ruby的设计选择截然不同.如果没有深深地弄乱C编码的内部结构并重新编译Python运行时来制作一个非常不同的版本(这是经典的CPython,但我相信完全相同的原则适用于其他良好的实现,例如,不可能使对象"monkeypatchable"作为Jython和IronPython,分别只是s/C/Java /和S/C/C#/ ;-).