में स्लाइसिंग को कार्यान्वित करना मैं एक वर्ग के लिए स्लाइस कार्यक्षमता को लागू करने की कोशिश कर रहा हूं जो मैं बना रहा हूं जो एक वेक्टर प्रतिनिधित्व बनाता है।पायथन: __getitem__
मेरे पास यह कोड अब तक है, जो मुझे विश्वास है कि टुकड़ा ठीक से लागू करेगा लेकिन जब भी मैं v[4]
जैसे कॉल करता हूं, जहां वी वेक्टर पायथन पर्याप्त पैरामीटर नहीं होने के बारे में एक त्रुटि देता है। इसलिए मैं यह समझने की कोशिश कर रहा हूं कि getitem
मेरी कक्षा में सादे इंडेक्स और स्लाइसिंग को संभालने के लिए विशेष विधि को कैसे परिभाषित किया जाए।
def __getitem__(self, start, stop, step):
index = start
if stop == None:
end = start + 1
else:
end = stop
if step == None:
stride = 1
else:
stride = step
return self.__data[index:end:stride]
नोट: सूची या टपल तरह builtins प्रकार देने के लिए आप '2.x पायथन संस्करणों के लिए __getslice__' लागू करता है चाहिए। देखें https://docs.python.org/2/reference/datamodel.html#object.__getslice__ – gregorySalvan
@ग्रीरी साल्वान: क्या उस अनुभाग के नीचे उस संगतता उदाहरण की पुनरावृत्ति नहीं है? – Eric
@Eric: नहीं, क्योंकि दूसरे कोलन की उपस्थिति '__get/set/delslice__' से गुजरती है। हालांकि, यह बहुत सूक्ष्म है। – user2357112