Вы пробовали copy
встроенную библиотеку?
В противном случае, я думаю, вы можете легко реализовать свой собственный .copy()
метод, который будет копировать значения из старого объект __dict__
в новый . Примерно так:
class MyObject:
a = None
def set_default_values(self):
self.a = 1
def copy(self, old):
if type(self) == type(old):
self.__dict__ = old.__dict__.copy()
else:
raise TypeError('Wrong type')
if __name__ == "__main__":
obj_1 = MyObject()
print(obj_1.a)
obj_1.set_default_values()
print(obj_1.a)
obj_2 = MyObject()
print(obj_2.a)
obj_2.copy(obj_1)
print(obj_2.a)
Обратите внимание, что я добавил проверку типа, чтобы быть уверенным, что вы копируете атрибуты, которые существовали бы в противном случае, но я думаю, что просто self.__dict__ = old.__dict__.copy()
будет работать нормально, думал, что вы можете закончить с атрибутами, которые вы, возможно, не предполагали иметь в объекте new .
Надеюсь, это поможет!