SORU
25 AĞUSTOS 2010, ÇARŞAMBA


Neden Python Soyut Temel Sınıfları kullanmak?

Python ördek yazarak eski yolları için kullanılan, ABC ihtiyacı (soyut sınıflar) anlamak için başarısız. help bunları kullanmak için nasıl iyi olur.

Gerekçeyi okumak PEP denedim ama kafamın üstünden geçti. Eğer değişken bir dizi kapsayıcı arıyordum varsa, büyük olasılıkla bunu kullanmaya çalıştı ** 0 veya daha fazla (EAFP). Akk kullanıyor numbers Bu modül, gerçek bir kullanım rastlamadım, ama bu anlayış var en yakın.

Biri bana mantığını açıklayabilir mi, lütfen?

CEVAP
26 AĞUSTOS 2010, PERŞEMBE


Kısa versiyon: teklif müşterileri ve uygulanan sınıflar arasındaki anlamsal sözleşme ve daha yüksek bir seviyeye Akk.

Uzun versiyon:

Bir sınıf ve arayanlar arasında bir sözleşme var. Sınıf bazı şeyleri yapmak ve bazı özellikleri vaat ediyor.

Sözleşme için farklı düzeyleri vardır.

Çok düşük bir düzeyde, bu Sözleşme bir yöntem veya parametre numarası adı içerebilir.

Staticly-yazılı dil, bu Sözleşme aslında derleyici tarafından uygulanacak. Python, EAFP veya içgözlem bilinmeyen nesne bu beklenen sözleşmeye uygun olduğunu teyit etmek için kullanabilirsiniz.

Ama aynı zamanda üst düzey, sözleşmede semantik sözler vardır.

__str__() bir yöntem varsa, örneğin, nesnenin string gösterimini dönmek için bekleniyor.olabilirnesnesinin tüm içeriğini sil, işlem kaydetme ve yazıcıdan boş bir sayfa tükür... ama ne yapması gerektiğini, Python el kitabında anlatılan yaygın bir anlayış var.

Anlamsal sözleşme kılavuzda açıklanan özel bir durum. print() yöntemi ne yapmalıyım? Bir yazıcı veya ekrana bir çizgi veya başka bir şey için nesne yazmalı? Duruma göre değişir - yorum tam sözleşme burada anlamak için okumak gerekir. Bir parça istemci kod sadece denetler print() yöntem bulunduğunu doğruladı parçası sözleşmesi - bir yöntem çağrısı yapılabilir, ama o orada anlaşması konusunda yüksek düzeyde anlam arama.

Soyut Temel Sınıf (ABC) tanımlama sınıf uygulayıcılar ve arayanlar arasında bir sözleşme üretmenin bir yoludur. Sadece yöntem adlarının bir listesi, ama bu yöntemler ne yapması gerektiği hakkında ortak bir anlayış değil. Eğer bu ABC miras, tüm kuralları yorumlarda tarif takip etmeye söz vermiş oluyorsunuz, print() yöntemin mantığı da dahil olmak üzere.

Python ördek statik-esneklik yazarak üzerinde pek çok avantajı vardır, ama tüm sorunları çözmez. Akk Python serbest form ve staticly yazılan dil bir kölelik ve disiplin arasında ara bir çözüm sunuyoruz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • kndx

    kndx

    11 Mart 2006
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008