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

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

12
задан Chetan 15 June 2010 в 22:35
поделиться

2 ответа

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

4
ответ дан 2 December 2019 в 20:39
поделиться

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

  • добавьте декоратор @staticmethod
  • не включайте «self» в качестве первого аргумента

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

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

Что сделает его вызываемым везде вы импортировали 'table', вызвав:

table.rotateMatrixClockwise()

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

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

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

11
ответ дан 2 December 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: