कहो मैं एक namedtuple
इस तरह है के साथ एक namedtuple बनाना:एक कस्टम हैश फंक्शन
FooTuple = namedtuple("FooTuple", "item1, item2")
और मैं निम्नलिखित समारोह हैशिंग लिए इस्तेमाल किया जा करना चाहते हैं अप्रासंगिक होने के लिए item1
और item2
का आदेश चाहते हैं (मैं तुलना-ऑपरेटर के लिए भी ऐसा ही करूंगा)। मैंने ऐसा करने के दो तरीकों के बारे में सोचा। पहले होगा:
FooTuple.__hash__ = foo_hash
यह काम करता है, लेकिन यह काट दिया महसूस करता है। इसलिए मैं उपवर्गीकरण FooTuple
की कोशिश की:
class EnhancedFooTuple(FooTuple):
def __init__(self, item1, item2):
FooTuple.__init__(self, item1, item2)
# custom hash function here
लेकिन तब मैं इस मिल:
DeprecationWarning: object.__init__() takes no parameters
तो, मैं क्या कर सकता है? या यह एक बुरा विचार है और मुझे सिर्फ अपनी कक्षा को खरोंच से लिखना चाहिए?
धन्यवाद, बस उपclass में कन्स्ट्रक्टर को छोड़कर समस्या को हल किया गया है। –
ध्यान दें कि 'repr (foo) 'अभी भी' Foo' की बात कर रहा है। यह 'कक्षा फू (नामांकित (' फू ', [' item1 ',' item2 '], verbose = झूठी) के रूप में बेहतर किया जा सकता है): –
@ स्वेन के उत्तर पर ध्यान दें [यहां] (http: // stackoverflow। com/प्रश्न/4901815/वस्तु के- कस्टम प्रकार के रूप में शब्दकोश-कुंजी) –