SORU
10 ŞUBAT 2009, Salı


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
13 ŞUBAT 2009, Cuma


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:

  1. Bir sınıf için isteğe bağlı özellikleri bir sürü sağlar.
  2. 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.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DigitalRev TV

    DigitalRev T

    30 AĞUSTOS 2007
  • Nightmare2005

    Nightmare200

    14 Ocak 2007
  • Tinkernut

    Tinkernut

    28 Aralık 2006