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
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.
't ön Null türü ile operatör davr...
Operatör C ile Aşırı yükleme# Uzatma Y...
Garip Objective-C Mod Davranış, Negati...
C int için bir yüzer döküm zaman garip...
Ön & C operatör davranış, C , sonrası ...