Are we passing any parameter to the init method | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
0

Are we passing any parameter to the init method

class Vector2D: def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): return Vector2D(self.x + other.x, self.y + other.y) first = Vector2D(5, 7) second = Vector2D(3, 9) result = first + second print(result.x) print(result.y)

18th Jul 2018, 11:42 AM
adarsh pandey
adarsh pandey - avatar
7 Answers
+ 2
self is a reference to the current instance of the class... When you call init though you do not pass it any argument for self. Example: init(2, 3) and not init(self, 2, 3)
18th Jul 2018, 1:00 PM
cyk
cyk - avatar
+ 1
In this case, yes we are passing three parameters to the __init__ method self, x value and y value.
18th Jul 2018, 11:46 AM
Satyam
+ 1
i believe self passes the instance of the class but I am not sure.
18th Jul 2018, 12:06 PM
Satyam
0
what is the value of self? does it always stores the object which is calling it
18th Jul 2018, 11:59 AM
adarsh pandey
adarsh pandey - avatar
0
then what are we passing in
19th Jul 2018, 11:14 AM
adarsh pandey
adarsh pandey - avatar
0
then what are we passing in the add method
19th Jul 2018, 11:16 AM
adarsh pandey
adarsh pandey - avatar
0
In the add method, we are passing second. result = first + second The add method is called when the + sign is encountered and whatever is listed after the + sign is the argument that is passed as other. So in this case, other is Vector2D(3, 9) because of this line of code: second = Vector2D(3, 9) I copied the code from above to help us follow it. I added comments to help. class Vector2D: def __init__(self, x, y): self.x = x self.y = y def __add__(self, other): return Vector2D(self.x + other.x, self.y + other.y) first = Vector2D(5, 7) # first is assigned the value of (5, 7) second = Vector2D(3, 9) # second is assigned the value of (3, 9) result = first + second # second is the argument sent to __add__ print(result.x) # result.x is the sum of both x values, 5 added to 3 = 8 print(result.y) # result.y is the sum of both y values, 7 added to 9 = 16 I hope this helps. :-)
18th Jul 2020, 9:05 PM
Deb
Deb - avatar