什么时候可以使用copy.deepcopy()?

时间:2013-09-03 07:28:34

标签: python coding-style deep-copy

我正在研究一个需要一定数量图像并对它们执行不同类型图像操作的类。可以随时将图像添加到类中以通过类方法进行修改。图像由类实例存储在列表中。许多图像操作需要某些模式,因此我希望将所有图像转换为相同的模式。为此,我编写了一个应用于每个图像操作函数的包装器。每当调用该函数时,包装器都会检查图像列表是否已更改,如果有,则检查哪些图像是新的并且需要转换。我正在使用深度复制,但我知道它有点慢,所以我想知道我的用法是否合适,或者是否有另一种方法来完成同样的事情。这是我的代码:

def _compwrapper(func):
    '''Checks to see if self.comp is defined before calling any image
    manipulation functions.'''

    def wrapped(self):
        if self.images: #if any images have been added
            if not self.oldimages: #if this isn't set, none have been converted
                self._convert(self.images)
                self.oldimages = copy.deepcopy(self.images)

            elif self.oldimages != self.images:
                diff = list(set(self.images) - set(self.oldimages))
                self._convert(diff)
                self.oldimages = copy.deepcopy(self.images)

            func(self)
        else:
            logging.info("Add some images before you try to do that!")

    return wrapped

任何建议将不胜感激。这是我在Python中的第一个“严肃”程序,所以我尽可能多地学习关于良好实践的知识。如果需要进一步澄清,请告诉我。

0 个答案:

没有答案