Python'daki sınıflar ve modüller


19

Python, rebelirli bir eylem kümesi gerçekleştiren birçok modüle (örneğin ) sahiptir. Bu modülün işlevlerini çağırabilir ve sonuç alabilirsiniz ve bir bütün olarak modülün arkasında bir fikir vardır (bu durumda, düzenli ifadelerle uğraşmak).

Sınıflar neredeyse aynı şeyi yapıyor gibi görünüyor, ama aynı zamanda özellikleri modüllerden biraz daha fazla kullanıyor gibi görünüyorlar.

Modüller hangi yollardan sınıflardan farklıdır? (Bir modülü alt sınıflandıramayacağımı biliyorum, ama öyle mi?) Modül yerine ne zaman sınıf kullanmalıyım?


Modül yöntemlerini çağırdığınızda bazen modülün sadece bir sınıf örneğine geçtiğini biliyor musunuz? Örneğin randommodüle bakınız. reAncak bunun doğru olup olmadığını hatırlamıyorum .
jscs

1
İlgili bir kavram bilmek - Modül ve Paket?
RBT

Yanıtlar:


12

Python modülü, yeniden kullanılabilir kodu kapsüllemek için kullanılan bir paketten başka bir şey değildir. Modüller genellikle, ancak her zaman değil, __init__.pyiçinde bir dosya bulunan bir klasörde bulunur . Modüller fonksiyonlar içerebilir ancak sınıflar da içerebilir. Modüller importanahtar kelime kullanılarak içe aktarılır .

Python'un tanımları bir dosyaya koymanın ve bunları bir komut dosyasında veya yorumlayıcının etkileşimli bir örneğinde kullanmanın bir yolu vardır. Böyle bir dosyaya modül denir; bir modülün tanımları diğer modüllere veya ana modüle alınabilir.

Aşağıdaki bağlantılarda Python modülleri hakkında daha fazla bilgi edinin:

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

Sınıflar ise ana uygulama kodunuzda veya uygulamanız tarafından içe aktarılan modüllerin içinde tanımlanabilir. Sınıflar Nesneye Yönelik Programlamanın kodudur ve özellikler ile yöntemler içerebilir.

Aşağıdaki bağlantılarda Python sınıfları hakkında daha fazla bilgi edinin:

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


3
Yani bu sınıfın sadece işlevleri olsa bile, bir modülde tek bir sınıfın olması kötü bir şey değil mi? Bu durumda genellikle sınıf yapmadan sadece bir modül yapmam gerektiğini hissediyorum. Modül yerine sınıfların ne zaman kullanılacağına dair temel bir kural var mı? (Bu sormaya çalışıyorum ... Daha açık hale getirmek için sorumu düzeltmeli miyim?)
Pro Q

6
Bir sınıfın birden çok örneğini oluşturabilirsiniz, ancak bir modülün örneklerini oluşturamazsınız. Modülleri statik sınıflarla veya tektonlarla karşılaştırabilirsiniz.
Eneko Alonso

1
Modüller her zaman __init__.pydosya içeren bir klasörde bulunmaz .
multigoodverse

1
@ProQ Python gibi sınıflar yerine modüllerde işlevlere sahip olabileceğiniz dillerde (örneğin, Java yerine), statik işlevleri modül düzeyinde tutmak genellikle iyi bir biçimdir. Sınıflar kendi durumları olan örnekleri ifade eder.
Turksarama

-2

Bir sürü saf işlevse, örneğin re, bir modüle koydum. Ben bu kodu (örneğin bir kez okunan, ancak verileri işlevlerin birkaç tarafından kullanılan bir dosya) tutmak istediğiniz devlet olduğunu bildiğimde bir sınıf kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.