【发布时间】:2013-11-30 10:08:30
【问题描述】:
我的一个同事向我展示了一些我觉得很有趣的代码:
class A(object):
def evolve(self):
if self.foo > 10:
self.__class__ = B
class B(A):
def bar(self):
print "I'm a B"
...这基本上就是它的要点。这个想法是在处理完其他计算之后在运行时“专门化”一个实例。我一直在考虑它,即使感觉不对(尤其是对__class__ 的赋值),我也看不出有什么问题,只要正确考虑到类型层次结构。
有没有办法在 Python 中做到这一点而不分配给__class__?
同样,我认为这并没有太大的问题,因为分配给__class__ 实际上只会改变解析顺序...不是吗?
【问题讨论】:
标签: python