在重新加载python模块时,并不难,并向您保证新对象将使用新代码,问题出现在现有对象周围。
是否可以升级现有对象以便他们使用新代码?我们可以假设我们知道哪些类被更改了。
但是,有可能在__init__()
中添加了一些额外的功能,所以只是复制它们的词典还不够。我考虑的一个可能的解决方案是确保通过执行类似obj = MyClass(obj)
的操作来升级这些对象,这意味着__init__
应该以这样的方式编写,即如果多次调用它就不会中断。
答案 0 :(得分:3)
您正在考虑的解决方案非常合理,但我建议添加静态方法来创建对象的更新版本,而不是向__init__()
添加其他功能。请考虑以下示例:
class Point(object):
def __init__(x, y):
self.x = x
self.y = y
@staticmethod
def init_from_point(obj):
return Point(obj.x, obj.y)
有了这个,您可以obj = Point.init_from_point(obj)
进行更新,而不会使__init__()
复杂化。