SORU
23 HAZİRAN 2014, PAZARTESİ


Operatör çok garip bir davranış '' yöntemleri ile.

Neden ilk sonuç False gerekir, True.

>>> from collections import OrderedDict
>>> OrderedDict.__repr__ is OrderedDict.__repr__
False
>>> dict.__repr__ is dict.__repr__
True

CEVAP
23 HAZİRAN 2014, PAZARTESİ


Kullanıcı tanımlı işlevler için Python 2'deilişkisizvebağlıyöntemleri descriptor protocol; OrderedDict.__repr__ kaydırılan işlevi pure-Python function olarak uygulanır gibi bir yöntem nesne, talep üzerine oluşturulur.

Tanımlayıcı protokolü arayın __get__ method nesneleri desteği, __repr__.__get__() denilen zaman deneyin erişim OrderedDict.__repr__; sınıflar None (örnek) ve sınıf nesnenin kendisi geçti. Bir olsun çünküyeniyöntem, is çağrılması her zaman başarısız nesne. Aynı yöntem nesne değildir.

dict.__repr__ özel bir Python fonksiyonu C fonksiyonu değildir, ve __get__ tanımlayıcı yöntemi 25**. Öznitelik erişim aynı nesne her zaman verir, is çalışır:

>>> dict.__repr__.__get__(None, dict) is dict.__repr__  # None means no instance
True

Yöntemleri __func__ bir öznitelik kaydırılan işlevi başvuran, bu kimlik için test etmek için kullanın

>>> OrderedDict.__repr__
<unbound method OrderedDict.__repr__>
>>> OrderedDict.__repr__.__func__
<function __repr__ at 0x102c2f1b8>
>>> OrderedDict.__repr__.__func__.__get__(None, OrderedDict)
<unbound method OrderedDict.__repr__>
>>> OrderedDict.__repr__.__func__ is OrderedDict.__repr__.__func__
True

Python 3 ile ortadan kaldırıyorilişkisizyöntemlerini, function.__get__(None, classobj) fonksiyonu dict.__repr__ yapar gibi davranır, yani () bir nesne döndürür. Ama aynı davranışı görürsünüzbağlıyöntemlerin, örnek alınan.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ecf150king

    ecf150king

    20 Ocak 2006
  • Kingsimba357

    Kingsimba357

    7 NİSAN 2008
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009