मेरे पास कुछ फ़ील्ड के साथ कुछ का प्रतिनिधित्व करने वाला वर्ग है। जब इस वर्ग के उदाहरणों की एक सूची क्रमबद्ध की जाती है, तो मैं चाहता हूं कि उन्हें किसी विशेष क्रम में क्रमबद्ध किया जाए (प्रत्येक से एक विशेष कुंजी प्राप्त करें)। मैं सिर्फ list.sort(key=Classname.sortKey)
कर सकता हूं और sortKey
विधि को परिभाषित कर सकता हूं, लेकिन मैं बस list.sort()
करता हूं और इसे काम करता हूं। मुझे लगता है कि मैं इसे __cmp__
ओवरराइड करके कर सकता हूं। हालांकि, मैं ऐसा कुछ करता हूं जब मैं किसी ऐसे चीज़ की तुलना कर रहा हूं जो मेरा डेटा प्रकार नहीं है? मुझे कुछ ऐसा लगता है ...पायथन में क्रमबद्ध डेटाटाइप कैसे बनाएं?
def __cmp__(self, o):
if isinstance(o, MyClass):
return cmp(self.sortKey(), o.sortKey())
return object.__cmp__(self, o) ##**wrong
लेकिन यह इसके बजाय काम करता है। मुझे परवाह नहीं है कि वे एक विषम सूची में क्या आदेश लेते हैं। मैं सिर्फ 0
वापस कर दूंगा लेकिन फिर MyClass(...) == x
जैसी सामग्री हमेशा सत्य है, x
MyClass
का उदाहरण नहीं है।