Как вы применяете общую подпись в наборе функций?

#python

Вопрос:

У меня есть класс с десятками «похожих» методов. Все они должны реализовывать одну и ту же подпись и тип возвращаемого значения, проверка ввода довольно схожа, но в остальном они независимы.

Они могут служить примером:

 def calculate_mass(self, relativistic:bool=False, tol=0.001, verbose:int=0)-gt;pd.Series:  ...   return ans   ...  def calculate_energy(self, relativistic:bool=False, tol=0.001, verbose:int=0)-gt;pd.Series:  ...   return ans   # etc.   

Существует ли простой способ обеспечить соблюдение общей подписи в этих методах? Было бы здорово также встроить некоторую проверку ввода без копирования кода.

Комментарии:

1. Что вы подразумеваете под «принуждением»?

2. В этом конкретном примере у вас может быть одна calculate() функция с дополнительным аргументом того типа, который вы вычисляете.

3. Под принудительным применением я имею в виду, что я хочу убедиться, что ни один разработчик (я?) Не забудет реализовать релятивистскую = Истинную/Ложную часть кода и т. Д…

4. Сигнатура функции-это просто список параметров, которые функция принимает в своем def операторе, и нет никакого способа принудительно написать код, который их использует. Если параметры содержат подсказки типа, то сторонний модуль может выполнить некоторую статическую проверку типа, но опять же это не имеет никакого отношения к тому, используются ли они или как они используются кодом функции. Дело в том, что то, что вы хотите сделать, не может быть достигнуто путем применения общей подписи.

5. Я нахожусь в пространстве Метаклассов и абстрактных методов… где вы можете обеспечить, чтобы все подклассы должны реализовывать данный метод.