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