Martijn yeni yöntemler böylece onların adres işaretçileri bir ile denk değildir .__get__
tarafından üretilen nesnelerdir bu doğru is
değerlendirme. ==
'u kullanmanın Python 2.7'de belirtilen şekilde değerlendirileceğini unutmayın. örneğinden başvurulan yöntem de örneğinden yöntemi ile birlikte taşınan bir dizi kendinden referans sınıfından referans ile eşit olmadığı, ancak
Python2.7
class Test(object):
def tmethod(self):
pass
>>> Test.meth is Test.meth
False
>>> Test.meth == Test.meth
True
>>> t = Test()
>>> t.meth is t.meth
False
>>> t.meth == t.meth
True
not edin. Python 3.3 yöntemleri için is
operatör olarak
>>> t = Test()
>>> t.meth is Test.meth
False
>>> t.meth == Test.meth
False
daha sık bu yüzden bu örnekte yerine beklenen davranışı elde ==
aynı şekilde davranır. Bu, hem __cmp__
kaybolan hem de Python 3'te daha temiz bir metod nesnesi temsilinden kaynaklanır; yöntemleri şimdi __eq__
var ve referanslar anında-yerleşik nesneler değildir, bu yüzden davranış, Python 2 beklentileri olmadan beklenebilir.
Python3.3
>>> Test.meth is Test.meth
True
>>> Test.meth == Test.meth
True
>>> Test.meth.__eq__(Test.meth)
True
Bu, Python 3 btw içinde çalışır. – poke