[Tutor] Question on implmenting __getitem__ on custom classes

Arup Rakshit ar at zeit.io
Tue Apr 23 02:16:58 EDT 2019


Hi,

I wrote below 2 classes to explore how __getitem__(self,k) works in 
conjuection with list subscriptions. Both code works. Now my questions 
which way the community encourages more in Python: if isinstance(key, 
slice): or if type(key) == slice: ? How should I implement this if I 
follow duck typing, because none of the code currently I wrote using 
duck typing techiniqe IMO.

class MyCustomList:
     def __init__(self, list = []):
         self.list = list

     def __getitem__(self, key):
         if isinstance(key, slice):
             return self.list[key]
         else:
             return self.list[key]

class MyCustomListV1:
     def __init__(self, list = []):
         self.list = list

     def __getitem__(self, key):
         if type(key) == slice:
             return self.list[key]
         else:
             return self.list[key]

if __name__ == '__main__':
     list = MyCustomList(list=[1, 2, 3, 4, 5, 6])
     print(list[1:3])
     print(list[3])
     print("=======\n")
     list = MyCustomListV1(list=[1, 2, 3, 4, 5, 6])
     print(list[1:3])
     print(list[3])

If run it, I get the output:

[2, 3]
4
=======

[2, 3]
4

-- 
Thanks,

Arup Rakshit



More information about the Tutor mailing list