Мне нужно создать функцию, чтобы повернуть заданную матрицу (список списков) по часовой стрелке, и мне нужно использовать ее в моем классе Table
. Где я должен поместить эту служебную функцию (называемую rotateMatrixClockwise
), поэтому я могу легко ее вызвать из функции в классе Table
?
Где я могу поместить функции утилиты в проект Python?
Ответ 1
Если вы не хотите сделать его членом класса Table
, вы можете поместить его в модуль utilities
.
Ответ 2
Сделать статической функцией...
- добавить декоратор @staticmethod
- не включать "я" в качестве первого аргумента
Ваше определение будет:
@staticmethod
def rotateMatrixClockwise():
# enter code here...
Что сделает его вызываемым везде, где вы импортировали "таблицу", вызывая:
table.rotateMatrixClockwise()
Декоратору необходимо только сообщить python, что ожидаемый неявный первый аргумент не ожидается. Если вы хотите, чтобы определения методов действовали как С#/Java, где self всегда неявно, вы также можете использовать декоратор "@classmethod".
Здесь документация для этого поступает непосредственно из руководства python.
Примечание. Я бы рекомендовал использовать классы Utility только там, где их код нельзя связать напрямую с модулем, потому что они обычно нарушают " принцип единой ответственности 'ООП. Он почти всегда лучше связывать функциональность класса как метода/члена с классом.