Amacı "uç" adında bir sınıfı tanımlamak olan bir modülüm var. (ve birkaç ilgili sınıf da.) Modülün kendisini nasıl çağırmalıyım? "uç" mu? "nibmodule"? Başka herhangi bir şey?
Amacı "uç" adında bir sınıfı tanımlamak olan bir modülüm var. (ve birkaç ilgili sınıf da.) Modülün kendisini nasıl çağırmalıyım? "uç" mu? "nibmodule"? Başka herhangi bir şey?
Yanıtlar:
Sadece uç. Uç sınıfını büyük N ile adlandırın. Adlandırma kuralları ve diğer stil önerileri hakkında daha fazla bilgi için Python stil kılavuzu PEP 8'e bakın .
Client
ve anlaşılır bir şekilde, sık sık aramak istediğim örneklerini yaparım client
. Ancak konvansiyonunuza göre, modül adı olacaktı client
ve bu nedenle örneklerime her zaman doğal olmayan bir ad vermek zorunda kalacağım client_instance
. Bu problem hakkında ne düşünüyorsunuz?
Client
, o zaman sınıf adıyla çakışır Client
. Olduğundan sadece 3 olası adlandırma varyantları ( client
, Client
ya CLIENT
hep örneklerini, sınıflar, modüllerin veya sabitler ikisi arasında bir çatışma orada olacağım). Modülünüzü sınıftan daha az bir örnek veya sabit olarak adlandırdığınız ve bu nedenle diğer olasılıklar için daha iyi adlandırma kuralı olduğuna inanıyorum. Ayrıca, değişkenler yerine genellikle sınıfları ve sabitleri içe aktardığınız için modüllerden içe aktarmayı daha okunaklı hale getirir.
Ben buna nib.py derdim. Ayrıca sınıfa Nib adını verirdim.
Üzerinde çalıştığım daha büyük bir python projesinde, temelde önemli bir sınıfı tanımlayan birçok modülümüz var. Sınıflar büyük harfle başlayarak adlandırılır. Modüller, küçük harfli sınıf gibi adlandırılır. Bu, aşağıdaki gibi ithalata yol açar:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
Biraz Java yöntemini taklit etmeye benziyor. Dosya başına bir sınıf. Ancak ek esneklikle, mantıklıysa, tek bir dosyaya her zaman başka bir sınıf ekleyebilirsiniz.
Çözümümün pitonik bakış açısından pek popüler olmadığını biliyorum, ancak sınıf olarak adlandırılan modül ile bir modül-> bir sınıfın Java yaklaşımını kullanmayı tercih ediyorum. Python stilinin arkasındaki sebebi anlıyorum, ancak çok sayıda sınıf içeren çok büyük bir dosyaya sahip olmaktan pek hoşlanmıyorum. Katlanmasına rağmen göz atmakta zorlanıyorum.
Diğer bir neden de sürüm kontrolüdür: büyük bir dosyaya sahip olmak, taahhütlerinizin o dosya üzerinde yoğunlaşma eğiliminde olduğu anlamına gelir. Bu, potansiyel olarak daha yüksek miktarda çatışmanın çözülmesine yol açabilir. Ayrıca kaydetmenizin belirli dosyaları değiştirdiği (dolayısıyla belirli sınıfları içeren) ek günlük bilgilerini de kaybedersiniz. Bunun yerine, hangi değişikliğin yapıldığını anlamak için yalnızca commit yorumu ile modül dosyasında bir değişiklik görürsünüz.
Özetle, python felsefesini tercih ediyorsanız, diğer gönderilerin önerilerine gidin. Bunun yerine java benzeri felsefeyi tercih ediyorsanız, sınıf Uç içeren bir Nib.py oluşturun.
spyder
Gezintiye yardımcı olması için sınıflarınızın bir özetini ve her ikisinde de aynı dosyanın açık olduğu iki bölmeyi görmek için veya benzer bir düzenleyici kullanın . Ayrıca, lütfen PEP8'i okuyun. Python, Python yazmak içindir ve Java için Java'dır, ancak Python Java yazmak için değildir .
uç iyidir. Şüpheniz varsa, Python stil kılavuzuna bakın.
Gönderen PEP 8 :
Paket ve Modül Adları Modüller kısa, tümü küçük harfli adlara sahip olmalıdır. Okunabilirliği artırırsa, modül adında alt çizgiler kullanılabilir. Python paketleri kısa, tamamı küçük harfli adlara sahip olmalıdır, ancak alt çizgi kullanımı tavsiye edilmez.
Modül adları dosya adlarıyla eşlendiğinden ve bazı dosya sistemleri büyük / küçük harfe duyarlı olmadığından ve uzun adların kesilmesi önemlidir, modül adlarının oldukça kısa seçilmesi önemlidir - bu Unix'te bir sorun olmayacaktır, ancak bir kod eski Mac veya Windows sürümlerine veya DOS'a aktarıldığında sorun.
C veya C ++ ile yazılmış bir genişletme modülü, daha yüksek bir seviye (örneğin daha fazla nesne yönelimli) arayüz sağlayan eşlik eden bir Python modülüne sahip olduğunda, C / C ++ modülünün önde gelen bir alt çizgisi (örneğin, _soket) vardır.
Gönderen PEP-8: Paket ve Modül İsimler :
Modüller kısa, tamamı küçük harfli adlara sahip olmalıdır. Okunabilirliği artırırsa, alt çizgiler modül adında kullanılabilir.
Python paketleri kısa, tamamı küçük harfli adlara sahip olmalıdır, ancak alt çizgi kullanımı tavsiye edilmez.
C veya C ++ ile yazılmış bir genişletme modülü , daha yüksek bir seviye (örneğin daha fazla nesne yönelimli) arayüz sağlayan eşlik eden bir Python modülüne sahip olduğunda, C / C ++ modülünün önde gelen bir alt çizgisi (örneğin, _soket) vardır.
python'daki foo modülü , Java'daki bir Foo sınıfı dosyaya eşdeğer olacaktır
veya
python'daki foobar modülü, Java'daki bir FooBar sınıf dosyasına eşdeğer olacaktır