class x:
def __init__(self,name):
self.name=name
def __str__(self):
return self.name
def __cmp__(self,other):
print("cmp method called with self="+str(self)+",other="+str(other))
return self.name==other.name
# return False
instance1=x("hello")
instance2=x("there")
print(instance1==instance2)
print(instance1.name==instance2.name)
उत्पादन यहाँ है:__cmp__ विधि यह Python 2.x में अपेक्षित के रूप में काम नहीं कर रहा है?
cmp method called with self=hello,other=there
True
False
कौन सा नहीं है कि मैं क्या उम्मीद: मैं कहना है 'दो उदाहरणों बराबर है, तो नाम फ़ील्ड बराबर कर रहे हैं' कोशिश कर रहा हूँ।
यदि __cmp__
फ़ंक्शन से मैं बस return False
करता हूं, तो यह True
के रूप में भी रिपोर्ट करता है !! यदि मैं -1
लौटाता हूं, तो मुझे False
मिलता है - लेकिन चूंकि मैं तारों की तुलना करने की कोशिश कर रहा हूं, यह सही नहीं लगता है।
मैं यहाँ क्या गलत कर रहा हूं?
धन्यवाद - आपको टिकटें मिलती है (भले ही अन्य लोगों ने समान जानकारी प्रदान की हो), क्योंकि यह सबसे स्पष्ट स्पष्टीकरण है! – monojohnny
जैसा कि अन्य ने टिप्पणी की, __cmp __() अप्रचलित है। इसके बजाय __lt __(), __eq __(), और __gt __() को परिभाषित करें। Http://docs.python.org/dev/whatsnew/3.0.html#ordering-comparisons के अनुसार – smci