W moim kodzie jedna z powyższych dwóch opcji działałaby równie dobrze, ale jestem zainteresowany znalezieniem zalet i wad obu podejść.
To zależy od twoich potrzeb. Przez większość czasu moduł funkcji będzie tym, czego szukasz.
Klasy Python (imho) nie powinny być traktowane jak klasy w C #, C ++ lub Java, musi istnieć logiczny powód, aby zgrupować zestaw funkcji w większym obiekcie nadrzędnym, struktury danych byłyby dobrym tego przykładem, chcesz spójny zestaw funkcji, które odnoszą się bezpośrednio do klasy zamiast luźno zebranego zestawu funkcji ogólnego przeznaczenia.
Moduł jest przeznaczony do ogólnego zhierarchizowanego grupowania podobnych systemów, zazwyczaj wszystkie funkcje narzędziowe mam pod jednym modułem, wszystkie dane pod innym, moja warstwa danych i złącza pod modułem bardziej „nadrzędnym”. Ponieważ moduł jest tylko grupowaniem mentalnym, mniej chodzi o to, jakie typy systemów są w nim (klasy lub funkcje, szczerze mówiąc prawdopodobnie połączenie tych dwóch), a więcej o logiczne połączenia między systemami w module.
Podstawowe pytanie dotyczy tego, czy potrzebujesz różnych instancji swojego modułu / klasy. moduł python jest jak singleton - zawsze odwołujesz się do tego samego obiektu, tzn. jeśli potrzebujesz instancji, potrzebujesz klasy.
Jeśli jednak nie potrzebujesz instancji, być może nadal będziesz musiał ustawić swój „obiekt” do stanu początkowego. chociaż jest to wyraźnie możliwe w przypadku zwykłego modułu, jeśli inicjowanie jest bardziej skomplikowane niż tylko ustawianie niektórych wartości, radziłbym mieć kod inicjujący w
__init__
metodzie klasy zapewniającej czytelność.źródło