Saya memiliki modul yang tujuannya adalah untuk mendefinisikan kelas yang disebut "nib". (dan beberapa kelas terkait juga.) Bagaimana saya harus memanggil modul itu sendiri? "ujung pena"? "nibmodule"? Ada yang lain?
Saya memiliki modul yang tujuannya adalah untuk mendefinisikan kelas yang disebut "nib". (dan beberapa kelas terkait juga.) Bagaimana saya harus memanggil modul itu sendiri? "ujung pena"? "nibmodule"? Ada yang lain?
Jawaban:
Hanya ujung pena. Beri nama kelas Nib, dengan huruf besar N. Untuk lebih lanjut tentang konvensi penamaan dan saran gaya lainnya, lihat PEP 8 , panduan gaya Python.
Client
, dan dapat dimengerti bahwa saya sering membuat contoh yang ingin saya hubungi client
. Tetapi menurut konvensi Anda, nama modulnya adalah client
, jadi saya selalu harus memberi nama instance saya dengan sesuatu yang tidak wajar client_instance
. Apa pendapat Anda tentang masalah ini?
Client
, maka itu akan bentrok dengan nama kelas Client
. Karena hanya ada 3 kemungkinan varian penamaan ( client
, Client
atau CLIENT
) akan selalu ada bentrokan antara dua instance, kelas, modul, atau konstanta. Saya percaya ada lebih sedikit kali Anda memberi nama modul Anda sama sebagai instance atau konstanta daripada kelas, dan oleh karena itu konvensi penamaan yang lebih baik dari kemungkinan lainnya. Ini juga akan membuat pengimporan dari modul lebih mudah dibaca karena Anda biasanya mengimpor kelas dan konstanta daripada variabel.
Saya akan menyebutnya nib.py. Dan saya juga akan menamai kelas Nib.
Dalam proyek python yang lebih besar yang saya kerjakan, kami memiliki banyak modul yang pada dasarnya mendefinisikan satu kelas penting. Nama kelas dimulai dengan huruf kapital. Modul diberi nama seperti kelas dalam huruf kecil. Ini mengarah ke impor seperti berikut:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
Ini seperti meniru cara Java. Satu kelas per file. Tetapi dengan fleksibilitas tambahan, Anda selalu dapat menambahkan kelas lain ke satu file jika itu masuk akal.
Saya tahu solusi saya tidak terlalu populer dari sudut pandang pythonic, tetapi saya lebih suka menggunakan pendekatan Java dari satu modul-> satu kelas, dengan modul yang dinamai sebagai kelas. Saya mengerti alasan di balik gaya python, tetapi saya tidak terlalu suka memiliki file yang sangat besar yang berisi banyak kelas. Saya merasa sulit untuk menjelajah, meski terlipat.
Alasan lainnya adalah kontrol versi: memiliki file besar berarti komitmen Anda cenderung berkonsentrasi pada file itu. Hal ini berpotensi menyebabkan lebih banyak konflik yang harus diselesaikan. Anda juga kehilangan informasi log tambahan yang komit Anda mengubah file tertentu (karena itu melibatkan kelas tertentu). Sebagai gantinya Anda melihat modifikasi pada file modul, dengan hanya komentar komit untuk memahami modifikasi apa yang telah dilakukan.
Kesimpulannya, jika Anda lebih suka filosofi python, carilah saran dari posting lain. Jika Anda lebih memilih filosofi seperti java, buat Nib.py yang berisi kelas Nib.
spyder
atau editor serupa untuk melihat ringkasan kelas Anda untuk membantu navigasi, dan dua panel dengan file yang sama terbuka pada keduanya. Baca juga PEP8. Python untuk menulis Python, dan Java untuk Java, tetapi Python bukan untuk menulis Java.
ujung pena baik-baik saja. Jika ragu, lihat panduan gaya Python.
Dari PEP 8 :
Nama Paket dan Modul Modul harus memiliki nama yang pendek, semuanya menggunakan huruf kecil. Garis bawah dapat digunakan dalam nama modul jika itu meningkatkan keterbacaan. Paket Python juga harus memiliki nama yang pendek, semuanya huruf kecil, meskipun penggunaan garis bawah tidak disarankan.
Karena nama modul dipetakan ke nama file, dan beberapa sistem file tidak membedakan huruf besar / kecil dan memotong nama yang panjang, penting agar nama modul dipilih agar cukup pendek - ini tidak akan menjadi masalah di Unix, tetapi mungkin saja masalah ketika kode diangkut ke versi Mac atau Windows yang lebih lama, atau DOS.
Ketika modul ekstensi yang ditulis dalam C atau C ++ memiliki modul Python yang menyertai yang menyediakan antarmuka tingkat yang lebih tinggi (misalnya lebih berorientasi objek), modul C / C ++ memiliki garis bawah utama (misalnya _socket).
Dari PEP-8: Nama Paket dan Modul :
Modul harus memiliki nama yang pendek, semuanya huruf kecil. Garis bawah dapat digunakan dalam nama modul jika itu meningkatkan keterbacaan.
Paket Python juga harus memiliki nama yang pendek, semuanya huruf kecil, meskipun penggunaan garis bawah tidak disarankan.
Ketika modul ekstensi yang ditulis dalam C atau C ++ memiliki modul Python yang menyertai yang menyediakan antarmuka tingkat yang lebih tinggi (misalnya lebih berorientasi objek), modul C / C ++ memiliki garis bawah utama (misalnya _socket).
Modul foo di python akan sama dengan file kelas Foo di Java
atau
Modul foobar di python akan sama dengan file kelas FooBar di Java