17. Instantiate an Object (Methods Doubt)


#1

Hi everyone!
I was doing my code and kept getting an error message, an I've since figured out the error but can't seem to understand why it is an error.

My first code was this:


class Triangle(object):
    number_of_sides = 3
    
    def __init__(self, angle1, angle2, angle3):
         self.angle1 = angle1
         self.angle2 = angle2
         self.angle3 = angle3

    def check_angles(self, angle1, angle2, angle3):
         if self.angle1+self.angle2+self.angle3 == 180:
              return True
         else:
              return False

my_triangle = Triangle(90,30,60)

print my_triangle.number_of_sides
print my_triangle.check_angles()

However, after seeing various codes and posts, I've since realised that I have to remove the arguments angle1, angle 2 and angle 3 from the check_angles() function. I've tried that and sucessfully completed the exercise.
I haven't understood it though.
Why do I have to remove those 3 arguments? Don't I also need to put them in since they're going to be used?Can anybody explain it to me?

Thank you so much!


#2

Hi, @pedro-oliveira ,

When you instantiate a Triangle object, the __init__ method that you wrote for the Triangle class assigns values to angle1, angle2, and angle3 attributes that become part of the new instance that is being created. Thereafter, those properties and their values are part of that instance. Consequently, when you call a method, such as check_angles, from that instance, that method can look up the existing values, and therefore does not need to be passed values for those attributes all over again.


#3

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.