2010-06-15 4 views
10

Ich muss eine Funktion erstellen, um eine bestimmte Matrix (Liste von Listen) im Uhrzeigersinn zu drehen, und ich muss es in meiner Table Klasse verwenden. Wo sollte ich diese Dienstprogrammfunktion (rotateMatrixClockwise genannt) setzen, damit ich sie leicht innerhalb einer Funktion in meiner Klasse Table aufrufen kann?Wo stelle ich Dienstprogrammfunktionen in mein Python-Projekt?

Antwort

4

Wenn Sie nicht möchten, dass es ein Mitglied der Table Klasse wird, könnten Sie es in ein utilities Modul setzen.

11

es sich um eine statische Funktion Make ...

  • die @staticmethod Dekorateur
  • hinzufügen
  • nicht enthalten 'Selbst' als erstes Argument

Ihre Definition wäre:

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

Welche wird es aufrufbar machen Überall dort, wo Sie 'Tabelle' importiert haben:

table.rotateMatrixClockwise() 

Der Dekorator muss nur python mitteilen, dass kein implizites erstes Argument erwartet wird. Wenn Sie festlegen möchten, dass Methodendefinitionen wie C#/Java funktionieren, wobei self immer implizit ist, können Sie auch den Dekorator '@classmethod' verwenden.

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

Hinweis: Ich würde empfehlen, Utility-Klassen nur dann, wenn ihr Code kann nicht direkt mit einem Modul gekoppelt werden, da sie in der Regel der ‚Single Responsibility Principle‘ des OOP verletzen. Es ist fast immer am besten, um die Funktionalität einer Klasse als Methode/Mitglied der Klasse zu binden.

Verwandte Themen