Diberikan kelas Python yang akan dipakai hanya sekali, yaitu hanya akan ada satu objek dari kelas. Saya bertanya-tanya dalam kasus apa masuk akal untuk membuat instance kelas tunggal alih-alih bekerja langsung dengan kelas.
Ada pertanyaan serupa , tetapi memiliki fokus berbeda:
- ini tentang pengelompokan variabel dan fungsi global ke dalam kelas dan
- Itu bukan Python-spesifik. Yang terakhir berarti tidak mempertimbangkan fakta bahwa (dalam Python) kelas adalah objek juga.
MEMPERBARUI:
Dengan Python, saya bisa melakukan hal berikut dengan kelas dan objek:
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
Jadi saya tidak melihat bagaimana pilihan antara kelas dan turunan dari kelas itu adalah tentang keadaan (dengan Python). Saya bisa mempertahankan keadaan dengan salah satu dari keduanya.
Selain itu, motivasi untuk membuat kelas saya / kelas bukan tentang menegakkan persyaratan Singleton.
Juga, ini bukan soal membuat Tipe baru.
Motivasinya adalah untuk mengelompokkan kode dan data terkait dan memiliki antarmuka untuk itu. Inilah sebabnya saya awalnya memodelkannya sebagai kelas dalam diagram kelas. Hanya ketika sampai pada implementasi saya mulai bertanya-tanya apakah akan membuat kelas ini atau tidak.
sumber
Ini adalah salah satu hal yang akan menyebabkan perang agama jika Anda terlalu banyak terlibat.
Tetapi secara umum praktik yang telah saya lihat berkali-kali adalah bahwa metode kelas harus memusatkan perhatian pada diri mereka sendiri hanya dengan membuat instance kelas itu.
Jika Anda berpikir tentang apa kelas itu, apa tujuan / perilakunya, maka ini masuk akal. Tujuan kelas adalah untuk membuat instance objek yang didasarkan pada dirinya sendiri . Ini adalah cetak biru yang juga dapat membangun gedung. Kelas "Pengguna" membuat objek "pengguna". Kelas "Anjing" membuat objek "anjing" dll
Berikan ini adalah perilaku sebuah kelas masuk akal maka metode yang Anda tambahkan ke kelas "X" akan memusatkan perhatian mereka dengan membuat objek "x".
Jadi, bahkan jika Anda hanya akan membutuhkan satu objek "x" Anda harus tetap instanciate itu.
Menambahkan metode ke kelas X yang tidak terkait dengan membuat instance objek "x" dapat menyebabkan membingungkan kode yang tidak diharapkan. Tentu saja ada banyak contoh di dunia nyata di mana orang telah melakukan ini, tetapi seperti saya katakan bahwa jalan menuju perang agama.
sumber