18. confused on a bit of code



My code works like it supposed to, however a bit of the code confused me, specifically this part:

class Equilateral(Triangle):
def init(self):
self.angle1= self.angle
self.angle2= self.angle
self.angle3= self.angle

Why is it that we are allowed to call self.angle1 and the other angles? Is it because the class inherited those from Triangle? And if we tried to instantiate the Equilateral class and call the check_angles method how would that look like? Any help would be appreciated!

class Triangle(object):
    def __init__(self,angle1,angle2,angle3):
    def check_angles(self):
        if (self.angle1 + self.angle2+self.angle3) == 180:
            return True 
            return False
my_triangle = Triangle(90,30,60)
print my_triangle.number_of_sides
print my_triangle.check_angles()
class Equilateral(Triangle):
    def __init__(self):
        self.angle1= self.angle
        self.angle2= self.angle
        self.angle3= self.angle


The __init__ method in the Equilateral class is overriding the __init__ method it inherited from the Triangle class. It takes no parameters since there is a class variable that applies to all three properties.

Were this override not present, we would get an argument count error when we attemt to invoke a new instance.


I see what you are saying, but why is it that we can call self.angle1 = self.angle if the init function is not taking the angle1 as a parameter?


The class variable, angle takes the place of the parameters, rather than passing in (60, 60, 60).


Thank you very much you have been a big help!!!


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