__setitem__ and __getitem__ in Python with example
In this tutorial, we will learn about two important methods in Python. They are Python __setitem__ and __getitem__. We will also see how to use them with an example.
Both __setitem__ and __getitem__ are magic methods in Python. Magic methods have two underscores in the prefix and suffix of the method name. They are generally used for operator overloading.
__setitem__ and __getitem__ magic methods
__setitem__ is a method used for assigning a value to an item. It is implicitly invoked when we set a value to an item of a list, dictionary, etc. __getitem__ is a method used for getting the value of an item. It is implicitly invoked when we access the items of a list, dictionary, etc. We can overload their operations by explicitly defining them.
Example of using these methods
Look at the code below:
class Student: def __init__(self,size): self.stu=[None]*size def __setitem__(self,rollno,name): #explicitly defined __setitem__ print("Setting name to rollno",rollno) self.stu[rollno]=name def __getitem__(self,rollno): #explicitly defined __getitem__ print("Getting name associated with rollno",rollno) return self.stu[rollno] s1=Student(4) s1='Meghana' s1='Raju' s1='Hari' s1='Sreeja' print(s1) print(s1[0:4])
Here, we created an object for the class Student called s1. Using the __init__ method we have created a list and assigned ‘None’ value to each element of the list. Next, when we are assigning values(s1=’Meghana’) the __setitem__ method is implicitly invoked as s1.__setitem__(0,’hi’). Next, when we are accessing(s1) the items the __getitem__ method is implicitly invoked as s1.__getitem__(0).
Setting name to rollno 0 Setting name to rollno 1 Setting name to rollno 2 Setting name to rollno 3 Getting name associated with rollno 0 Meghana Getting name associated with rollno slice(0, 4, None) ['Meghana', 'Raju', 'Hari', 'Sreeja']
Also, read: Use destructors in Python