सलाह दें मेरे पास एक वर्ग है जो सूची ऑब्जेक्ट को उप-वर्गीकृत करता है। अब मुझे स्लाइसिंग को संभालने की ज़रूरत है। इंटरबेट्स पर मैंने जो भी पढ़ा है, उससे __getitem__
विधि का उपयोग करके इसे किया जाना है। कम से कम पायथन 2.7+ में जो मैं उपयोग कर रहा हूं। मैंने यह किया है (नीचे देखें), लेकिन जब मैं स्लाइस में जाता हूं तो __getitem__
विधि को कॉल नहीं किया जाता है। इसके बजाए, एक टुकड़ा किया जाता है और एक सूची लौटा दी जाती है। मुझे मेरी सूची का एक नया उदाहरण वापस आना चाहिए।पायथन स्लाइसिंग को अनुकूलित करें, कृपया
कृपया मुझे यह जानने में मदद करें कि क्या गलत है।
धन्यवाद!
class myList(list):
def __init__(self, items):
super(myList, self).__init__(items)
self.name = 'myList'
def __getitem__(self, index):
print("__getitem__")
if isinstance(index, slice):
print("slice")
return self.__class__(
self[x] for x in range(*index.indices(len(self)))
)
else: return super(myList, self).__getitem__(index)
if __name__ == "__main__":
print("\nI'm tesing out custom slicing.\n")
N = 10
L = myList(range(N))
L3 = L[3]
L02 = L[:2]