2010-06-15 4 views
10

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

ответ

4

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

11

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

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

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

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

Который сделает его пригодным для использования везде вы импортировали «стол» по телефону:

table.rotateMatrixClockwise() 

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

Here's the documentation for this coming directly from the python manual.

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

Смежные вопросы