Python 在运行时动态更改实例的类?
我的一位同事向我演示了一些我觉得非常有趣的代码:Python 在运行时动态更改实例的类?,python,Python,我的一位同事向我演示了一些我觉得非常有趣的代码: class A(object): def evolve(self): if self.foo > 10: self.__class__ = B class B(A): def bar(self): print "I'm a B" 。。。这就是它的要点。其思想是在处理其他计算之后,在运行时“专门化”一个实例。我一直在考虑它,即使它感觉不对(特别是对\uuuuu cl
class A(object):
def evolve(self):
if self.foo > 10:
self.__class__ = B
class B(A):
def bar(self):
print "I'm a B"
。。。这就是它的要点。其思想是在处理其他计算之后,在运行时“专门化”一个实例。我一直在考虑它,即使它感觉不对(特别是对\uuuuu class\uuuu
的赋值),只要正确考虑类型层次结构,我也看不出它有什么问题
有没有一种方法可以在Python中实现这一点,而不必指定给\uuuuu class\uuuuuu
同样,我也不认为这有什么错,因为分配给
\uuuuuu class\uuuuuuu
只会有效地改变分辨率顺序。。。没有?做这类事情的经典方法是。创建一组类似的类,然后主类充当门面,其方法将操作委托给所包含的类/对象。执行此类操作的经典方法是。创建一组类似的类,然后主类充当门面,其方法将操作委托给所包含的类/对象。执行此类操作的经典方法是。创建一组类似的类,然后主类充当门面,其方法将操作委托给所包含的类/对象。执行此类操作的经典方法是。创建一组类似的类,然后主类充当门面,其方法将操作委托给所包含的类/对象。这里描述的是状态或策略模式的“技术上可能”实现。现在,虽然这是合法的python代码,但我强烈建议不要使用它,除非作为在代码部分实例化对象的最后手段,您无法控制这些对象,甚至还有更好的方法
根据个人经验(我也用Python最具动态性的特性做了很多实验),坚持状态和策略模式的更常规的实现会使代码更具可读性、可测试性和可维护性 您在这里描述的是状态或策略模式的“技术上可能”实现。现在,虽然这是合法的python代码,但我强烈建议不要使用它,除非作为在代码部分实例化对象的最后手段,您无法控制这些对象,甚至还有更好的方法
根据个人经验(我也用Python最具动态性的特性做了很多实验),坚持状态和策略模式的更常规的实现会使代码更具可读性、可测试性和可维护性 您在这里描述的是状态或策略模式的“技术上可能”实现。现在,虽然这是合法的python代码,但我强烈建议不要使用它,除非作为在代码部分实例化对象的最后手段,您无法控制这些对象,甚至还有更好的方法
根据个人经验(我也用Python最具动态性的特性做了很多实验),坚持状态和策略模式的更常规的实现会使代码更具可读性、可测试性和可维护性 您在这里描述的是状态或策略模式的“技术上可能”实现。现在,虽然这是合法的python代码,但我强烈建议不要使用它,除非作为在代码部分实例化对象的最后手段,您无法控制这些对象,甚至还有更好的方法
根据个人经验(我也用Python最具动态性的特性做了很多实验),坚持状态和策略模式的更常规的实现会使代码更具可读性、可测试性和可维护性 我已经和我的同事讨论过了。问题是没有事先知道完整的接口。这些项目就像一个巨大的专有接口的抽象!把它全部抽象出来是不可行的。我们只需要一分钟。我只是转达一下信息。我没有机会充分分析这个问题……我已经和我的同事讨论了这个问题。问题是没有事先知道完整的接口。这些项目就像一个巨大的专有接口的抽象!把它全部抽象出来是不可行的。我们只需要一分钟。我只是转达一下信息。我没有机会充分分析这个问题……我已经和我的同事讨论了这个问题。问题是没有事先知道完整的接口。这些项目就像一个巨大的专有接口的抽象!把它全部抽象出来是不可行的。我们只需要一分钟。我只是转达一下信息。我没有机会充分分析这个问题……我已经和我的同事讨论了这个问题。问题是没有事先知道完整的接口。这些项目就像一个巨大的专有接口的抽象!把它全部抽象出来是不可行的。我们只需要一分钟。我只是转达一下信息。我没有机会充分分析这个问题。。。