DEV Community

Super Kai (Kazuya Ito)
Super Kai (Kazuya Ito)

Posted on

__getitem__ & __setitem__ in Python (2)

Buy Me a Coffee

*Memos:

You can create the custom list and tuple with __getitem__() and __setitem__() as shown below:

<Custom list with upper() & lower()>

class MyList: data = ['a', 'b', 'c', 'd', 'e'] def __getitem__(self, index): return self.data[index] def __setitem__(self, index, value): self.data[index] = value def upper(self): self.data = [x.upper() for x in self.data] def lower(self): self.data = [x.lower() for x in self.data] v = MyList() print(v) # <__main__.MyList object at 0x0000029B85E772F0>  print(v[0], v[1], v[2], v[3], v[4]) print(v.__getitem__(index=0), v.__getitem__(index=1), v.__getitem__(index=2), v.__getitem__(index=3), v.__getitem__(index=4)) # a b c d e  print(v[1:3]) print(v.__getitem__(index=slice(1, 3))) # ['b', 'c']  print(v[:]) print(v.__getitem__(index=slice(None))) # ['a', 'b', 'c', 'd', 'e']  for x in v: print(x) # a # b # c # d # e  v.upper() print(v[:]) # ['A', 'B', 'C', 'D', 'E']  v[0] = 'X' v[1:5] = ['Y', 'Z'] print(v[:]) # ['X', 'Y', 'Z']  v.lower() print(v[:]) # ['x', 'y', 'z'] 
Enter fullscreen mode Exit fullscreen mode

<Custom assignable tuple with upper() & lower()>

class MyTuple: data = ('a', 'b', 'c', 'd', 'e') def __getitem__(self, index): return self.data[index] def __setitem__(self, index, value): temp = list(self.data) temp[index] = value self.data = tuple(temp) def upper(self): self.data = tuple(x.upper() for x in self.data) def lower(self): self.data = tuple(x.lower() for x in self.data) v = MyTuple() print(v) # <__main__.MyTuple object at 0x0000029B85B2F260>  print(v[0], v[1], v[2], v[3], v[4]) print(v.__getitem__(index=0), v.__getitem__(index=1), v.__getitem__(index=2), v.__getitem__(index=3), v.__getitem__(index=4)) # a b c d e  print(v[1:3]) print(v.__getitem__(index=slice(1, 3))) # ('b', 'c')  print(v[:]) print(v.__getitem__(index=slice(None))) # ('a', 'b', 'c', 'd', 'e')  for x in v: print(x) # a # b # c # d # e  v.upper() print(v[:]) # ('A', 'B', 'C', 'D', 'E')  v[0] = 'X' v[1:5] = ('Y', 'Z') print(v[:]) # ('X', 'Y', 'Z')  v.lower() print(v[:]) # ('x', 'y', 'z') 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)