SORU
10 EYLÜL 2008, ÇARŞAMBA


Eski stil ve yeni stil Python sınıfları arasındaki fark nedir?

Eski stil ve yeni stil Python sınıfları arasındaki fark nedir? Hiç tarzı eski sınıflar bu gün kullanmak için bir neden var mı?

CEVAP
10 EYLÜL 2008, ÇARŞAMBA


http://docs.python.org/2/reference/datamodel.html#new-style-and-classic-classes :

2.1, eski tarz Python kadar sınıfları tek lezzet kullanıcı için kullanılabilir. Kavramının (eski) sınıfı ilgisiz kavramını türü: x bir örnek, bir eski stil Sınıf, x.__class__ atar Sınıf x ama type(x) her zaman <type 'instance'>. Bu eski tarz tüm örneklerini, kendi sınıf düzeyinden bağımsız olarak, yerleşik tek tip, adı verilen bir örneği ile yürütülür olduğu gerçeğini yansıtmaktadır.

Yeni-stil sınıfları Python 2.2 birleştirmek sınıfları ve türleri tanıtıldı. Yeni tarzı bir sınıf ne fazla ne kullanıcı tanımlı türü bir daha az. Eğer x yeni tarzı bir sınıf örneğiyse, o zaman type(x) x.__class__ aynıdır.

Yeni-stil sınıfları tanıtımı için büyük motivasyon meta-modeli, tam bir birleşik nesne modeli sağlamaktır. Ayrıca, en yerleşik türleri veya giriş alt yeteneği gibi hemen faydaları bir numarası vardır, "bilgisayarlı özelliklerini etkinleştir.", tanımlayıcıları

Uyumluluk nedenleriyle, sınıflar hala varsayılan olarak tarzı eski. Yeni-stil sınıfları yeni tarzı başka bir sınıf (yazın yani) üst sınıf, ya da "üst düzey yazarsanız başka üst gerekiyorsa." nesne olarak belirterek oluşturulur Yeni tarzı sınıfların davranış ne tür iadeler için ayrıca önemli ayrıntıları bir dizi tarzı eski sınıfları farklıdır. Bu değişiklikler, bazı yeni nesne modeli temel, özel yöntemler çağırılan gibi. Diğerleri" yöntemi gibi uyumluluk sorunları için birden fazla miras davası için çözüm. önce uygulanamayacağını "düzeltmeleri

Python 3 sadece yeni tarzı sınıfları vardır. Eğer object seni alt sınıf ya da sınıflar Python 3 tarzı yeni değil. Hala object alt etmek için, ancak, tavsiye edilir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • gsmaestro

    gsmaestro

    17 AĞUSTOS 2006
  • Professor Messer

    Professor Me

    27 NİSAN 2007