Hi, and welcome back. This is the last video first series object oriented programming in Python. Today we'll be discussing operator overloading. What is operator overloading? In Python, there is a feature that allows same operator to have different meaning according to context. For example, plus could have different meanings in different contexts.
And this is called operator overloading. Let's see this. For example, I created a equals to a G, that is a string and B equals to L that is also a string. When I create another variable C and A add a plus b, that has a value assigned to string in it, and when I print say, it will print all the integers Together, it will not print like he plus lol Oh. So what it does it is this concatenating both the strings, see this and I ran the code and print see it prints Hello. Similarly, when I define d equals to five equals to six and I'm going to go about adding these two in the variable F and go about printing it, it will add these two variables.
Now, in Python you saw that the data types are not defined which directly assign values to variables. And the Python engine itself recognizes what the data type is. And according to that, it adds if it is a string, it merges the string values and if it is integers, it adds 10 teachers and gives the result. Similarly, if we define a list within Python, for example, students, that has to actually for alum six elements name and age like john ate me FIFO and LIFO and we create another list that is new underscore students, Joseph eight, Alex seven. And when we merge these two list by using the operator Plus, it gives the list of all the students that we merged. Let's see, let's Okay, not painting this at all give the combined list of all students.
However, if we for example, create a point class that is, like in coordinate system, there are two values x and y in the two coordinate system. And we created a class by defining constructor method that takes in x equals to zero and y equals to zero where x and y are given us parameters and when we instantiate into point one object, like p one, and rent its value, it gives that it is an object. Now what if we want to add the two points for the example? We created another point. Let's see that. B two B one one equals two point.
Let's give this where users three and four and when we go about adding point, Brent be one this B one one. Now when we go about now, this is giving the Type error where it does not recognize plus the operator plus. So when, when a class is created, user creates its own class custom class, we created custom class that in the index point. And we instantiated that as an object. And we tried to add those two objects together. The Python did not recognize that and get given give a type error.
That's unsupported operand type for plus. How can we handle this operation? operator overloading concept becomes very handy in this type of scenario. Now we're going to update this point class. So we created another class point underscore update. We again created a constructor a method that takes an x equals to zero y equals to zero and takes in x And why it's better meter from the user.
And then what we did we formatted the output. We use string method to do that. Now what is that? It's a special function. Eitan has a list of special functions that generally handles makes makes it makes the operator more or the custom class more compatible with the built in class functions. So what it does actually, it creates an A string a string output of the result.
And let's see if we created let's see how it does. Now I'm creating another object v2 from the class point underscore update and I printed that out object. Now see the output is three four and it's giving in the form of point. However, you saw that when we created B one object and pass the same x&y values and when you printed that it gave that point object in the form of this output. However now when we formatted the result output in the form of a string variable it gave this output. So, this constructor special function is very handy in this type of scenario.
And when we use it we use generally to make the custom class methods more compatible with the built in class functions. We can also do this by using instead of print string, string function and format function. Now let's do it again. And let's try to print B one plus v2. However, now, this is still giving an error, it is still not adding. So we need to add another method.
Another special function that is add what it takes, it takes a stealth argument of x and y and adds it to the other point arguments that is other dot x and other dot y. And it returns the updated value in the form of the format that we form a string method that we just defined before it This is again a special constructor method add there is a list of constructor methods available in Python for addition. Generally, this is what is happening it is adding p one dot add add p two. If you want to subtract, we are going to do the same thing, but we are going to use sub instead of add for multiplication, I'm ul for power POW and for division we are going to use true diff. What is that what is actually doing we are reassigning the values of x and adding the values of x with the point one and point two.
And similarly we are doing we are doing it for y within the argument we're passing the self that is x&y and other that is the point to that we have Given do add and at the end we're returning the updated values of x and y. So let's run this in the kernel the kernel is updated v3 is defined, I give it another value eight, nine, and before it is defined, I keep it at five and six, p three and P four are printed now and see the values have been added. So the operator overloading basically helps us to do operations in custom class and make it more compatible. With the built in classes, there are a number. Generally it uses a special function to do this. This is the list of special function.
However, this is not limited. It includes other special functions as well. If you're looking for other special functions, I'll add it here for further reading, and may you have any queries feel free to contact I hope you have a better understanding of operator overloading in Python. This is one of the last topic actually the last topic of object oriented programming in Python. I hope you enjoyed it and have moved forward in in your understanding in creating your understanding of object oriented programming in Python. May you have any queries, comments, feedbacks, feel free to contact I'll be waiting to see your feedback.
Thank you.