Biorąc pod uwagę klasę Python, która zostanie utworzona tylko raz, tzn. Będzie tylko jeden obiekt klasy. Zastanawiałem się, w jakich przypadkach sensowne jest utworzenie instancji pojedynczej klasy zamiast pracy bezpośrednio z klasą.
Jest podobne pytanie , ale koncentruje się na innym:
- chodzi o grupowanie zmiennych globalnych i funkcji w klasę i
- Nie jest on specyficzny dla Pythona. To ostatnie oznacza, że nie uwzględnia faktu, że klasy (w języku Python) są również obiektami.
AKTUALIZACJA:
W Pythonie mogę wykonywać następujące czynności zarówno z klasami, jak i obiektami:
class A(object):
pass
A.some_state_var = True
# Then later
A.some_state_var = False
my_a = A()
my_a.some_state_var = True
# Then later
my_a.some_state_var = False
Nie rozumiem więc, jak wybór między klasą a instancją tej klasy dotyczy stanu (w Pythonie). Mogę utrzymać stan z jednym z dwóch.
Co więcej, motywacja do stworzenia mojej klasy / instancji klasy nie polega na egzekwowaniu wymogu Singleton.
Nie chodzi też o tworzenie nowego typu.
Motywacją jest zgrupowanie powiązanych kodów i danych oraz posiadanie interfejsu. Dlatego początkowo zamodelowałem go jako klasę na schemacie klas. Dopiero przy implementacji zacząłem się zastanawiać, czy utworzyć tę klasę, czy nie.
źródło
Jest to jedna z tych rzeczy, które spowodują wojnę religijną, jeśli wplątujesz się w nią zbyt wiele.
Ale ogólnie praktyką, którą widziałem wiele razy, jest to, że metody klasowe powinny zajmować się tylko tworzeniem instancji tej klasy.
Jeśli myślisz o tym, czym jest klasa, jaki jest jej cel / zachowanie, to ma to sens. Celem klasy jest tworzenie instancji obiektów opartych na niej . Jest to plan, który może również budować budynek. Klasa „User” tworzy obiekty „user”. Klasa „Pies” tworzy obiekty „pies” itp
Podaj, że zachowanie klasy ma sens, dlatego metody, które dodasz do klasy „X”, zajmą się tworzeniem obiektów „x”.
Więc nawet jeśli kiedykolwiek będziesz potrzebować tylko jednego obiektu „x”, powinieneś go zaimplementować.
Dodanie metod do klasy X, które nie są związane z tworzeniem instancji obiektów „x”, może prowadzić do mylenia nieoczekiwanego kodu. Istnieje oczywiście mnóstwo przykładów w prawdziwym świecie, w którym ludzie i tak to zrobili, ale tak jak powiedziałem, ta ścieżka prowadzi do wojny religijnej.
źródło