In meinem Code würde eine der beiden oben genannten Optionen gleich gut funktionieren, aber ich bin daran interessiert, die Vor- und Nachteile beider Ansätze herauszufinden.
Es hängt ganz ehrlich von Ihren Bedürfnissen ab. Meistens ist ein Funktionsmodul das, wonach Sie suchen.
Python-Klassen (imho) sollten nicht wie Klassen in C # oder C ++ oder Java gedacht werden. Es muss einen logischen Grund geben, eine Reihe von Funktionen in einer größeren übergeordneten Klasse zu gruppieren. Datenstrukturen wären ein gutes Beispiel dafür Eine kongruente Menge von Funktionen, die direkt auf die Klasse angewendet werden, anstelle einer lose gesammelten Menge von Funktionen, die für allgemeine Zwecke bestimmt sind.
Ein Modul ist für die gesamte hierarchische Gruppierung ähnlicher Systeme vorgesehen. Normalerweise habe ich alle Dienstprogrammfunktionen unter einem einzigen Modul, alle Daten unter einem anderen, meine Datenschicht und Konnektoren unter einem eher "übergeordneten" Modul. Da ein Modul nur eine mentale Gruppierung ist, geht es weniger darum, welche Arten von Systemen sich darin befinden (Klassen oder Funktionen, ehrlich gesagt wahrscheinlich eine Mischung aus beiden), sondern vielmehr um die logischen Verbindungen zwischen den Systemen unter dem Modul.
Die grundlegende Frage ist, ob Sie unterschiedliche Instanzen Ihres Moduls / Ihrer Klasse benötigen . Ein Python-Modul ist wie ein Singleton - Sie verweisen immer auf dasselbe Objekt, dh wenn Sie Instanzen benötigen, benötigen Sie eine Klasse.
Wenn Sie jedoch keine Instanzen benötigen, müssen Sie Ihr "Objekt" möglicherweise noch auf einen Anfangszustand einstellen. Während dies mit einem einfachen Modul eindeutig möglich ist, würde ich empfehlen, Code
__init__
zur besseren Lesbarkeit in der Methode einer Klasse zu initialisieren, wenn die Initialisierung komplexer ist als das Festlegen einiger Werte .quelle