gpt4 book ai didi

python - 使用相同的参数从另一个已实例化的对象创建新对象

转载 作者:行者123 更新时间:2023-12-01 03:01:42 26 4
gpt4 key购买 nike

在Python中是否可以从已经实例化的对象重新创建一个对象,并将其所有参数传递到__init__方法中?

inspect.getcallargs类似,但针对类实例。

例如:

class A:
def __init__(self, some_arg):
self.some_arg = some_arg

def f(a):
# somehow get all arguments from `a`, with which it was created
# kwargs = ...?
# and create a new instance of class with the same (or modified) args:
return a.__class__(**kwargs)

a = A(100)
new_a = f(a)
print(new_a.some_arg)
>>> 100

最佳答案

不,这是不可能的,因为 __init__ 方法的参数可能已被丢弃,用于计算其他值,或以多种不同的方式保存,而这些方式不可能创建一个检索的通用方法。

但是,您可以使用the Factory pattern从预设的可配置参数实现灵活的对象初始化。 ,您可以使用 copy.deepcopy 复制现有对象。 (但是,请注意深度复制存在边缘情况,因此使用它时要小心并务必阅读文档)

关于python - 使用相同的参数从另一个已实例化的对象创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43748822/

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