gpt4 book ai didi

python - 如何在新类中实例化对象?

转载 作者:行者123 更新时间:2023-12-02 20:53:05 27 4
gpt4 key购买 nike

有点奇怪的问题,但我想知道如何将对象从一个类导入到另一个类。我想象在扩展程序时添加更多的类方法和属性,并且我仍然希望能够使用旧数据。我的想法如下:

class old_obj:

def __init__(self, text):
self.name = text

def set_amount(self, num):
self.amount = num

def introduce_yourself(self):
print("I am {} and I am {} many".format(self.name, self.amount))

oldest = old_obj("myself")
oldest.set_amount(15)
also_old = old_obj("Bach")

class new_obj:
def __init__(self):
#some code
#more code

我希望能够写出如下内容:

renewed = new_obj(oldest)
also_new = new_obj(also_old)

在这里,我想保留 oldest.amount 中的 15,但不提示 also_old.amountNone。特别是,我想保留 oldest 具有的任何属性,而不要求它具有所有可能的属性。有没有办法将类的实例复制到新类?

编辑:为清晰起见进行了编辑

最佳答案

您可以将对象实例字典复制到新类。

from copy import deepcopy

class old_obj:

def __init__(self, text):
self.name = text

def set_amount(self, num):
self.amount = num

def introduce_yourself(self):
print("I am {} and I am {} many".format(self.name, self.amount))

oldest = old_obj("myself")

class new_obj:
def __init__(self, my_old_obj):
for var, val in my_old_obj.__dict__.items():
setattr(self, var, deepcopy(val))
#some code
#more code

newest = new_obj(oldest)

假设您希望新对象中具有唯一值,我对该值进行了深度复制。但这也可能存在问题,因为并非所有内容都可以复制(例如文件对象)。复制属性时可能会出现其他奇怪的情况,例如您想要使用生成器执行的操作。如果这是一个类似于 GUI 小部件的东西,它可能会变得更奇怪。

但是对于很多对象类型来说,这都是可行的。

关于python - 如何在新类中实例化对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61992886/

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