मेरे पास सेल नामक एक वर्ग है:कस्टम पायथन कक्षाओं में डिफ़ॉल्ट तरीकों को ओवरराइड करने का आसान तरीका?
class Cell:
def __init__(self, value, color, size):
self._value = value
self._color = color
self._size = size
# and other methods...
Cell._value
एक स्ट्रिंग, पूर्णांक, आदि संग्रहीत करेगा (जो भी मैं उस ऑब्जेक्ट का उपयोग कर रहा हूं)। मैं सभी डिफ़ॉल्ट विधियों को चाहता हूं जो आमतौर पर <Cell object>._value
का उपयोग करने के लिए किसी ऑब्जेक्ट के "मान" का उपयोग करें ताकि मैं कर सकूं:
>>> c1 = Cell(7, "blue", (5,10))
>>> c2 = Cell(8, "red", (10, 12))
>>> print c1 + c2
15
>>> c3 = Cell(["ab", "cd"], "yellow", (50, 50))
>>> print len(c3), c3
2 ['ab', 'cd']
# etc.
मैं सभी डिफ़ॉल्ट विधियों को ओवरराइड कर सकता हूं:
class Cell:
def __init__(self, value, color, size):
# ...
def __repr__(self):
return repr(self._value)
def __str__(self):
return str(self._value)
def __getitem__(self, key):
return self._value[key]
def __len__(self):
return len(self._value)
# etc.
... लेकिन क्या कोई आसान तरीका है?
एक पूर्णांक, 'self._value' क्यों एक कुंजी द्वारा अनुक्रमित करने की क्षमता है? और क्या आपने कभी एक पूर्णांक की लंबाई लेने की कोशिश की है? इसके अलावा, यह संभवतः कॉकम्यूनिटी विकी नहीं होना चाहिए: किसी को भी इस तरह का जवाब देने के लिए अंक नहीं मिलते हैं और हम यहां कुछ बिंदुओं से हमें प्यार करते हैं। – aaronasterling
-1: यह विकी नहीं होना चाहिए। –
@AaronMcSmooth 'self._value' किसी भी डेटा प्रकार को पकड़ सकता है इसलिए मैं सभी संभावित विधियों को उपलब्ध करना चाहता हूं। –