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
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ıfx
amatype(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. Halaobject
alt etmek için, ancak, tavsiye edilir.
@Staticmethod ve @Python classmethod a...
Python 2'de range ve xrange fonksiyonl...
Kendi türleri ve özellik sınıfları ara...
yerleşik fonksiyon aç python: mod, bir...
Yeni/arasındaki fark/ücretsiz sil mall...