gpt4 book ai didi

python - 模块重新加载后如何升级 Python 对象?

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:29 25 4
gpt4 key购买 nike

虽然重新加载 python 模块并不难,并且向您保证新对象将使用新代码,但问题出在现有对象上。

是否可以升级现有对象以便它们使用新代码?我们可以假设我们知道更改了哪些类。

仍然有可能向 __init__() 添加了一些额外的功能,所以仅仅复制他们的字典是不够的。我考虑过的一种可能的解决方案是确保可以通过执行类似 obj = MyClass(obj) 的操作来升级这些对象,这意味着 __init__ 应该以这样的方式编写多次调用也不会中断。

最佳答案

您正在考虑的解决方案是完全合理的,但我建议添加一个静态方法来创建对象的更新版本,而不是向 __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__() 复杂化。

关于python - 模块重新加载后如何升级 Python 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8450260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com