为什么要使用DeepCopy?

问题描述 投票:0回答:1

为什么这个存储库上的代码 使用 DeepCopy?

def connect(self,resourceName,ID_Query=True,Reset_Device=True):
        if not self.isConnected:
            try: 
                selfCopy=deepcopy(self)
                selfCopy.TLPM=self.TLPM
                selfCopy.deviceNET=selfCopy.TLPM(resourceName,ID_Query,Reset_Device)
                self.logger.info(f'|{self.__class__.__name__}| Successfully connect the device: {resourceName}')
                
                _index=self.resourceName.index(resourceName)
                
                selfCopy.resourceNameConnected=resourceName
                
                selfCopy.isConnected=True
                selfCopy.resourceName=selfCopy.resourceName[_index]
                selfCopy.modelName=selfCopy.modelName[_index]
                selfCopy.serialNumber=selfCopy.serialNumber[_index]
                selfCopy.manufacturer=selfCopy.manufacturer[_index]

                self.isConnected=False
                return selfCopy
            except:
                selfCopy.logger.error(f'|{self.__class__.__name__}| Fail to connect the device.')

我想知道当使用深度复制时他的想法是什么,它应该有一个目的,我只是没有看到它。

我只是尝试删除 DeepCopy 并使用

self.
并且它有效。

python deep-copy
1个回答
0
投票

您的代码首先复制一个对象,然后对副本进行就地修改(突变)并返回该突变副本。

如果您没有先创建副本,那么您将拥有对原始副本的引用——您不仅会改变副本,还会改变原始副本。

© www.soinside.com 2019 - 2024. All rights reserved.