Hangi sınıfların alt edemiyor?
Orada hangi yerleşik ve standart kütüphane sınıfları subclassable olmayan bir kural ("") son?
3.3, burada Python gibi birkaç örnek:
boolfunctionoperator.itemgetterslice
""İki C ve saf Python. sınıflar son uygulanması ile uğraşan bir question buldum
Sebep sınıfı "" en başta. son seçilir açıklayabilir anlamak istiyorum
CEVAP
"" Python. son bir sınıf için iki sebep var gibi görünüyor
1. Sınıf ihlal Değişmez
Singleton deseni izleyen sınıfları örnekleri sınırlı (önceden belirlenmiş) bir numara var o değişmez. Bir alt sınıfta bu değişmeyen herhangi bir ihlali sınıf bir niyet ve doğru bir şekilde işe yaramaz. ile tutarsız olacaktır Örnekler:
bool:True,False; Guido's comments bkzNoneType:NoneNotImplementedType:NotImplementedellipsis:Ellipsis
Olguların bu kategoride Singleton deseni dışında olabilir ama hiç farkında değilim.
2. Ortada İkna Edici Bir Durumda Kullanın
Bir C sınıfı uygulanan sınıflara izin vermek için ek iş (en azından CPython) gerektirir. İnandırıcı bir senaryo olmadan bu işi çok cazip değildir, gönüllüler öne gelmek için daha az olasıdır. Örnekler:
function; Tim Peters' post bkz
NOT 1:
Ben aslında geçerli durumlarda kullanmak için, ama sadece yetersiz ilgi, function operator.itemgetter sınıflara yer olduğunu düşündüm. @Kullanım durumları here here sunulan bu işaret için agf sayesinde ikna edici (soru için yorum agf@) değildir.
NOT 2:
Beni ilgilendiren, başka bir Python uygulaması yanlışlıkla son bir sınıf sınıflara CPython izin ver. Bu non-taşınabilir kod (kendi Python destekliyorsa kullanmak durumunda zayıf olabilir, ama birileri hala function alt kod yazmak olabilir) neden olabilir. Bu Python belgelerinde alt ve tüm uygulamaları bu açıdan CPython davranış takip gerektiren olamaz yerleşik ve standart tüm kütüphane sınıflarını işaretleyerek çözülebilir.
NOT 3:
Bu mesaj, tüm yukarıdaki durumlarda CPython tarafından üretilen:
TypeError: type 'bool' is not an acceptable base type
Bu konu ile ilgili çok sayıda soru göstergesi olarak oldukça gizli. Son sınıflar açıklayan belgelere bir paragraf eklemek için bir öneri göndermek ve hatta belki de hata mesajı değiştireceğim:
TypeError: type 'bool' is final (non-extensible)

Hangi push_rear bir sıra uygulamak () ...
Seçmek için Hangi tekrarlayıcı, Liste ...
Hangi eklenti Visual Studio, SVN için ...
gcc edemiyor bit/predefs bulabilirsini...
Hangi keycode kaçmak için jQuery ile a...