SORU
6 Ocak 2010, ÇARŞAMBA


Mu "modifikasyon ne ()&; Python mı?"

django.utils.functional.py:

for t in type(res).mro():#<-----this
    if t in self.__dispatch:
        return self.__dispatch[t][funcname](res, *args, **kw)

Modifikasyon anlamıyorum.
Ben google tarafından arama ve fazla İngilizce makaleler gördüm, ama ben hala bunu anlayamıyorum.

CEVAP
6 Ocak 2010, ÇARŞAMBA


Birlikte izleyin...:

>>> class A(object): pass
... 
>>> A.__mro__
(<class '__main__.A'>, <type 'object'>)
>>> class B(A): pass
... 
>>> B.__mro__
(<class '__main__.B'>, <class '__main__.A'>, <type 'object'>)
>>> class C(A): pass
... 
>>> C.__mro__
(<class '__main__.C'>, <class '__main__.A'>, <type 'object'>)
>>> 

Sürece biz tek bir miras, __mro__ sadece kayıt düzeni: sınıf, tabanı tabanı tabanı ve Benzerleri için object (sadece işleri için yeni tarzı sınıfların ders).

Şimdi, ilebirden fazlamiras...:

>>> class D(B, C): pass
... 
>>> D.__mro__
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <type 'object'>)

...seni de alırız güvencesi olan, __mro__, hiçbir sınıf çoğaltılamaz ve hiçbir sınıf geldikten sonra onun ataları, kaydetmek, sınıfları ilk girin aynı düzeyde birden çok devralma (B ve C Bu örnek) içinde __mro__ soldan sağa.

Her öznitelik bir sınıfın örneği değil, sadece yöntem, kavramsal olarak baktı boyunca __mro__, Yani, eğer birden fazla sınıf arasında ataları tanımlayan bir isim, bunu size söyler nerede özniteliği görülecektir -- birinci sınıf __mro__ bunu tanımlayan bir isim.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • SaMmM123

    SaMmM123

    3 Mayıs 2006