Bir kendisine dahil ederse, ne olduğunu ve neden yararlıdır?
"Programming Python", Mark Lutz bahseder "". mixins içinde C/C /C yapıyorum# arka plan ve bu terimi daha önce hiç duymadım. Bir kendisine dahil ederse ne olur?
Okuma arasındaki çizgiler this example (verdim bağlantılı çünkü oldukça uzun), ben cesaret verici bir davanın kullanarak çoklu kalıtım uzanan bir sınıf olarak karşı 'doğru' sınıflara. Bu doğru mu? Neden yerine yeni işlevi, bir alt sınıf içine koymak bir şey yapayım ki? Böyle bir konuda neden kendisine dahil ederse/çoklu kalıtım bir yaklaşım kullanarak kompozisyon daha iyi olurdu?
Çoklu miras bir kendisine dahil ederse ne ayırır? Sadece anlambilimin konusudur.
CEVAP
Gerçekten kendisine dahil ederse, çoklu miras bir kendisine dahil ederse ayıran şey - özellikle de tamamen kafamdan atmak istiyorum?
Bir kendisine dahil ederse, çoklu kalıtım özel bir türüdür. Mixins kullanıldığı iki ana durum vardır:
- Bir sınıf için isteğe bağlı özellikleri bir sürü sağlar.
- Farklı pek çok ders belirli bir özelliği kullanmak istiyorum.
Bir numaralı örnek için werkzeug's request and response system düşünün. Basit bir istek nesnesi diyerek yapabilirim:
from werkzeug import BaseRequest
class Request(BaseRequest):
pass
Eğer kabul başlık desteği eklemek istiyorum, bunu yapmak istiyorum
from werkzeug import BaseRequest, AcceptMixin
class Request(BaseRequest, AcceptMixin):
pass
Eğer bir istek destekler başlıkları, etags, kimlik doğrulama, ve kullanıcı Aracısı desteği kabul eden nesne yapmak isteseydim, bunu yapabilirdim:
from werkzeug import BaseRequest, AcceptMixin, ETagRequestMixin, UserAgentMixin, AuthorizationMixin
class Request(BaseRequest, AcceptMixin, ETagRequestMixin, UserAgentMixin, AuthorizationMixin):
pass
Fark ince ama yukarıdaki örneklerde, kendisine dahil ederse, sınıfları, kendi üzerinde durmak için yapılmamıştır. Daha geleneksel çoklu kalıtım, AuthenticationMixin (örneğin) muhtemelen Doğrulayıcı gibi bir şey daha olurdu. Bu sınıf muhtemelen kendi üzerinde durmak için tasarlanmış olabilir.
İsteğe bağlı bağımsız değişkenler ile ...
Tutucu kendisine dahil ederse, SCSS/CS...
Java Kendisine Dahil Ederse, Uygulamak...
Kendisine dahil ederse, vs miras...
Yansıma nedir ve neden yararlıdır?...