在Python中给实例的__class__属性赋值
在什么情况下可以给一个实例的 __class__
属性赋值,什么时候又不可以呢?
像 TypeError: __class__ assignment: only for heap types
这样的错误信息对我来说并不太有帮助。
1 个回答
17
你只能给一个用户自定义类的实例(也就是用 class
关键字定义的类)赋值 __class__
属性,而且新的值也必须是一个用户自定义的类。至于这些类是新式类还是旧式类其实没关系。(不过你不能把旧式类的实例变成新式类的实例。)想了解更多,可以看看 Python 的 bug 跟踪器中的 这个问题,里面也提到错误信息有点难理解。
再补充一下 Rafe 在上面评论中说的:在生产环境中绝对不要这样做。