2010-06-15 22 views
10

Ho bisogno di creare una funzione per ruotare una data matrice (lista di liste) in senso orario, e ho bisogno di usarla nella mia classe Table. Dove dovrei inserire questa funzione di utilità (chiamata rotateMatrixClockwise) così posso chiamarla facilmente da una funzione nella mia classe Table?Dove inserisco le funzioni di utilità nel mio progetto Python?

risposta

4

Se non si desidera farne un membro della classe Table, è possibile inserirlo in un modulo utilities.

11

Ne fanno una funzione statica ...

  • aggiungere il decoratore @staticmethod
  • non includono 'sé' come primo argomento

tua definizione potrebbe essere:

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

Quale lo renderà richiamabile ovunque si importato 'table' chiamando:

table.rotateMatrixClockwise() 

Il decoratore è necessaria solo per dire python che nessun primo argomento implicito è previsto. Se si desidera che le definizioni dei metodi agiscano come C#/Java, dove self è sempre implicito, è possibile utilizzare anche il decoratore '@classmethod'.

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

Nota: mi consiglia di utilizzare classi di utilità solo se la loro codice non può essere accoppiato direttamente ad un modulo perché in genere violano la 'Single Responsibility Principle' di programmazione orientata agli oggetti. È quasi sempre meglio legare la funzionalità di una classe come metodo/membro alla classe.

Problemi correlati