Zadaję to pytanie w odniesieniu do Pythona, choć prawdopodobnie dotyczy to większości języków OOP.Tworzenie klasy Python dla "tylko jednej instancji"?
Kiedy spodziewam się używać modelu danych tylko raz w dowolnym programie, mogę utworzyć klasę z klasą/statycznymi metodami i atrybutami lub po prostu utworzyć zwykłą klasę i utworzyć instancję tylko raz i używać tylko tej jednej kopii. W takim przypadku, która metoda jest lepsza i dlaczego?
Z pytonem mogłem również napisać moduł i użyć go tak, jakbym zrobił klasę. W takim przypadku, który sposób jest lepszy i dlaczego?
Przykład: Chcę mieć centralną strukturę danych do uzyskiwania dostępu/zapisywania danych do plików.
Moduł sposób:
data.py
attributes = something
...
def save():
...
main.py
import data
data.x = something
...
data.save()
Klasa sposób:
class Data:
attributes = something
@classmethod
def save(cls):
Data.x = something
Data.save()
instancja sposób
class Data:
def save(self):
data = Data()
data.x = something
data.save()
Dlaczego upadek? Jest to uzasadnione pytanie programistyczne. – darkfeline
search stackoverflow dla 'singleton python' – warvariuc
Zmienione pytanie jest znacznie lepsze. Nie sądzę, że bliskie (z wyjątkiem duplikatu) jest obecnie uzasadnione. –