SORU
9 AĞUSTOS 2010, PAZARTESİ


Neden python kullanarak iki belirli şeyler çiziyor mu?

Gerçek bir programlama dili için oldukça yeniyim, ve Python ilk sorum. Biliyorum yolumu Linux biraz, alacak bir yaz işi (ben hala lise), ve bu işi benim yapmam gereken bir sürü boş vakti olan Ben kullanmayı öğrenmek Python.

Bir şey olsa bana geliyor. Tam olarak ifadeleri gibi . varsa Python farklı nedir

x.__add__(y) <==> x y
x.__getattribute__('foo') <==> x.foo

Yöntemleri ne ben de bir şeyler biliyorum, Ve ne yaptıklarını anlıyorum, ama benim soru: Nasıl bu çift yöntemler daha basit görünümlü benzerleri arasında yukarıda farklı alt çizgi vardır?

Eğer bu esas Python tarihsel açıdan, başıboş başlatmak için çekinmeyin Eğer programlama tarihi üzerine ders vermiş olmak benim için sorun değil, aslında çok faydalı olduğunu görüyorum :) P. S.,.

CEVAP
9 AĞUSTOS 2010, PAZARTESİ


Burada Python'un yaratıcısı explaining it:

... yerine yeni bir sözdizimi için oluşturulması daha sınıf yöntemleri özel türde (örneğin başlatıcılar ve yıkıcı olarak), bu özellikler olabilir karar verdi ele sadece kullanıcı gerektiren özel yöntemleri uygulamak __init__, __del__, gibi isimler ve benzeri. Bu adlandırma kuralı tanımlayıcılar nerede C alınan alt çizgi ile başlayan saklıdır derleyici tarafından ve sık sık özel anlamı (örneğin, makrolar gibi C __FILE__ ön işlemci).

...

Ben de bu tekniği sağlamak için kullanılır. kullanıcı davranışını yeniden tanımlamak için sınıfları Python operatörleri. Daha önce olduğu gibi dikkat, Python uygulanan C ve işlev işaretçileri tablolar için kullanır çeşitli yetenekleri uygulamak yerleşik nesneler (örneğin, “get ”, “” ve“”). öznitelik Ekle İçin bu yetenekleri tanımlanmasını kullanıcı tanımlı sınıflar, ben eşlenen özel çeşitli işlev işaretçileri yöntem __getattr__gibi isimler __add__ __call__. Bir var bunlar arasında doğrudan yazışma adları ve işlev tabloları bir zaman tanımlamak için işaretçiler C. uygulama yeni Python nesneleri

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • ehowhome

    ehowhome

    22 NİSAN 2009
  • Sean Murphy

    Sean Murphy

    4 ŞUBAT 2009