我有一个图书馆(pymunk)正在维护。我应该在所有相关类上添加自己的copy()
方法,还是让库的用户在需要副本时使用标准库的 copy.deepcopy 方法?
最近,一位用户询问了一种复制世界对象的方法。当时图书馆不支持任何方式来做到这一点。但是,现在我添加了对 pickle 的支持,因此 copy.deepcopy 会自动工作。
问题是最好对库提供的对象使用复制方法,还是只遵循标准库中的 copy.deepcopy。其他一些库提供了自己的复制方法,例如 numpy 数组复制和 pandas 数据帧复制。
添加额外的复制方法并不是很复杂,因为我可以调用 deepcopy,如下所示:
import copy
class A():
def copy(self):
return copy.deepcopy(self)
我关心的是清晰度和易用性。(python zen“应该有一种——最好只有一种——明显的方法。”)