Python api design, добавить метод copy к объекту или defer для копирования библиотеки
У меня есть библиотека (pymunk), которую я поддерживаю. Должен ли я добавить свой собственный copy()
метод на всех соответствующих классах или позволить пользователям библиотеки использовать стандартный метод copy.deepcopy библиотеки, когда они хотят копию?
Недавно пользователь спросил о способе копирования объекта мира. В то время библиотека не поддерживала какой-либо способ сделать это. Тем не менее, теперь я добавил поддержку для pickle, поэтому в результате автоматически работает copy.deepcopy.
Вопрос в том, лучше ли использовать метод copy для объектов, предоставляемых библиотекой, или просто перенести на copy.deepcopy в стандартной библиотеке. Некоторые другие библиотеки предоставляют свои собственные методы копирования, такие как numpy array copy и pandas dataframe copy.
Добавление дополнительного метода копирования не очень сложно, так как я могу просто вызвать deepcopy, например так:
import copy
class A():
def copy(self):
return copy.deepcopy(self)
Моя забота о ясности и простоте использования. (Python Zen "Должен быть один - и предпочтительно только один - очевидный способ сделать это".)