Anon'un cevabında:
" __init__
Mevcut sınıfta yapılanlara ek olarak süper bir şeyin yapılmasına ihtiyacınız varsa __init__
, bunu kendiniz aramalısınız, çünkü bu otomatik olarak olmayacak"
İnanılmaz: Miras ilkesinin tam tersini ifade ediyor.
O değil "süper en dan bir şey __init__
(...) otomatik olmayacak" taban sınıfı çünkü otomatik gerçekleşmesi İSTİYORUM yani ama olmaz __init__
türetilmiş CLAS tanımı ile değiştirileceğini__init__
Öyleyse, NEDEN türetilmiş_sınıfı tanımlamak, birisi mirasa başvurduğunda amaçlanan __init__
şeyi geçersiz kılar?
Bunun nedeni, kişinin temel sınıfta YAPILMAYAN bir şeyi tanımlaması gerektiğidir __init__
ve bunu elde etmenin tek yolu, yürütülmesini türetilmiş bir sınıf __init__
işlevine koymaktır .
Başka bir deyişle, eğer bu ikincisi geçersiz kılınmamışsa, 'temel sınıfta__init__
otomatik olarak yapılacak şeye ek olarak ' temel sınıfta bir şeye ihtiyaç vardır__init__
.
Aksine DEĞİL.
O halde sorun, temel sınıfta mevcut olan istenen talimatların __init__
artık somutlaştırma anında etkinleştirilmemesidir. Bu inaktivasyon dengelemek amacıyla, özel bir şey gereklidir: açıkça taban sınıf çağırarak __init__
, amacıyla TUTUN , ADD İÇİN DEĞİL, başlatma baz sınıfı tarafından gerçekleştirilen __init__
. Resmi belgede tam olarak söylenen budur:
Türetilmiş bir sınıftaki geçersiz kılma yöntemi, aslında aynı ada sahip temel sınıf yöntemini değiştirmek yerine genişletmek isteyebilir . Temel sınıf yöntemini doğrudan çağırmanın basit bir yolu vardır: sadece BaseClassName.methodname (self, argümanlar) çağırın.
http://docs.python.org/tutorial/classes.html#inheritance
Tüm hikaye bu:
amaç, temel sınıf tarafından gerçekleştirilen başlatmayı, yani saf kalıtımı TUTMAK olduğunda, özel bir şey gerekmez, yalnızca __init__
türetilmiş sınıfta bir işlevi tanımlamaktan kaçınılmalıdır.
amaç, temel sınıf tarafından gerçekleştirilen başlatma işlemini DEĞİŞTİRMEK olduğunda, __init__
türetilmiş sınıfta tanımlanmalıdır.
Amaç, temel sınıf tarafından gerçekleştirilen başlatmaya işlemleri EKLEMEK olduğunda, temel sınıfa __init__
yönelik açık bir çağrı içeren bir türetilmiş sınıf tanımlanmalıdır.__init__
Anon'un yazısında hayret verici hissettiğim şey, sadece miras teorisinin tersini ifade etmesi değil, aynı zamanda kılını kıpırdatmadan oy alan 5 kişinin geçtiği ve ayrıca 2 yıl içinde tepki verecek kimsenin olmadığıdır. ilginç konusu nispeten sık okunması gereken bir konu.
object
bir yazım hatası olduğunu anlayabiliyorum . Ama şimdisuper
sorunun atıfta bulunduğu başlığa bile sahip değilsin .