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 "Должен быть один - и предпочтительно только один - очевидный способ сделать это".)

0 ответов

Другие вопросы по тегам