Kelas vs modul dengan Python

19

Python memiliki banyak modul (seperti re) yang melakukan serangkaian tindakan tertentu. Anda dapat memanggil fungsi-fungsi modul ini dan mendapatkan hasil, dan modul secara keseluruhan memiliki ide di baliknya (dalam hal ini, berurusan dengan ekspresi reguler).

Kelas tampaknya melakukan hal yang hampir sama persis, tetapi mereka juga tampaknya menggunakan properti sedikit lebih banyak daripada modul.

Dalam hal apa modul berbeda dari kelas? (Saya tahu saya tidak bisa subkelas modul, tetapi apakah itu?) Kapan saya harus menggunakan kelas, bukan modul?

Pro Q
sumber
Apakah Anda sadar bahwa ketika Anda memanggil metode modul, kadang-kadang modul tersebut hanya melewati kelas instance? Lihat misalnya randommodul. Saya tidak ingat apakah ini benar re, namun.
jscs
1
Konsep terkait yang perlu diketahui - Modul vs Paket?
RBT

Jawaban:

12

Modul python tidak lain adalah paket untuk merangkum kode yang dapat digunakan kembali. Modul biasanya, tetapi tidak selalu, berada di folder dengan __init__.pyfile di dalamnya. Modul dapat berisi fungsi tetapi juga kelas. Modul diimpor menggunakan importkata kunci.

Python memiliki cara untuk meletakkan definisi dalam file dan menggunakannya dalam skrip atau dalam contoh interaktif dari juru bahasa. File seperti itu disebut modul; definisi dari suatu modul dapat diimpor ke modul lain atau ke modul utama.

Pelajari lebih lanjut tentang modul Python di tautan ini:

https://docs.python.org/2/tutorial/modules.html (Python 2) https://docs.python.org/3/tutorial/modules.html (Python 3)

Kelas, di sisi lain, dapat didefinisikan dalam kode aplikasi utama Anda atau modul di dalam yang diimpor oleh aplikasi Anda. Kelas adalah kode Pemrograman Berorientasi Objek dan dapat berisi properti dan metode.

Pelajari lebih lanjut tentang kelas Python di tautan ini:

https://docs.python.org/2/tutorial/classes.html (Python 2) https://docs.python.org/3/tutorial/classes.html (Python 3)

Eneko Alonso
sumber
3
Jadi bukan hal yang buruk untuk memiliki satu kelas dalam sebuah modul, bahkan jika kelas itu hanya memiliki fungsi? Saya merasa seperti dalam situasi itu saya umumnya harus hanya membuat modul tanpa membuat kelas. Apakah ada aturan yang mendasari kapan harus menggunakan kelas, bukan modul? (Itulah yang saya coba tanyakan ... Haruskah saya mengedit pertanyaan saya untuk membuatnya lebih jelas?)
Pro Q
6
Anda bisa membuat banyak instance dari sebuah kelas, tetapi Anda tidak bisa membuat instance dari sebuah modul. Anda dapat membandingkan modul dengan kelas statis atau lajang.
Eneko Alonso
1
Modul tidak selalu berada di folder dengan __init__.pyfile.
multigoodverse
1
@ProQ Dalam bahasa seperti Python di mana Anda dapat memiliki fungsi dalam modul daripada kelas (sebagai lawan dari, katakanlah, Jawa) itu umumnya bentuk yang baik untuk menjaga fungsi statis di tingkat modul. Kelas menyiratkan contoh dengan negara mereka sendiri.
Turksarama
-2

Jika itu adalah sekelompok fungsi murni, misalnya re, saya meletakkannya di modul. Saya menggunakan kelas ketika saya tahu ada keadaan yang ingin saya pertahankan dengan kode itu (mis. File yang dibaca sekali, tetapi datanya digunakan oleh beberapa fungsi).

Greg Bell
sumber