निम्नलिखित कोड को पूरा करने का सबसे प्राकृतिक तरीका क्या है?तुलना ऑपरेटरों को लागू करते समय मिश्रित प्रकारों को कैसे संभालें?
import functools
@functools.total_ordering
class X:
def __init__(self, a):
self._a = a
def __eq__(self, other):
if not isinstance(other, X):
return False
return self._a == other._a
def __lt__(self, other):
if not isinstance(other, X):
return ... // what should go here?
return self._a < other._a
if __name__ == '__main__':
s = [2, 'foo', X(2)]
s.sort()
print s
बस झूठी या सही लौटना एक अच्छा विचार नहीं है। इस मामले पर विचार करें जब आपके पास एक और समान वर्ग वाई है और एक्स ('foo') <वाई ('बार') और वाई ('बार')> एक्स ('foo') है। परिणाम सुसंगत नहीं हो सकते हैं। – user763305
लेकिन वापस नहीं आया कार्यान्वित काम करता है। फिर पायथन अपने स्वयं के डिफ़ॉल्ट क्रम का उपयोग करेगा जो कि कुछ हद तक मनमानी लेकिन सुसंगत है। – user763305