Где я могу поместить функции утилиты в проект Python?

Мне нужно создать функцию, чтобы повернуть заданную матрицу (список списков) по часовой стрелке, и мне нужно использовать ее в моем классе Table. Где я должен поместить эту служебную функцию (называемую rotateMatrixClockwise), поэтому я могу легко ее вызвать из функции в классе Table?

Ответ 1

Если вы не хотите сделать его членом класса Table, вы можете поместить его в модуль utilities.

Ответ 2

Сделать статической функцией...

  • добавить декоратор @staticmethod
  • не включать "я" в качестве первого аргумента

Ваше определение будет:

@staticmethod
def rotateMatrixClockwise():
    # enter code here...

Что сделает его вызываемым везде, где вы импортировали "таблицу", вызывая:

table.rotateMatrixClockwise()

Декоратору необходимо только сообщить python, что ожидаемый неявный первый аргумент не ожидается. Если вы хотите, чтобы определения методов действовали как С#/Java, где self всегда неявно, вы также можете использовать декоратор "@classmethod".

Здесь документация для этого поступает непосредственно из руководства python.

Примечание. Я бы рекомендовал использовать классы Utility только там, где их код нельзя связать напрямую с модулем, потому что они обычно нарушают " принцип единой ответственности 'ООП. Он почти всегда лучше связывать функциональность класса как метода/члена с классом.