18. confused on a bit of code


#1


https://www.codecademy.com/courses/python-intermediate-en-WL8e4/3/4?curriculum_id=4f89dab3d788890003000096


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

class Equilateral(Triangle):
angle=60
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):
    number_of_sides=3
    def __init__(self,angle1,angle2,angle3):
        self.angle1=angle1
        self.angle2=angle2
        self.angle3=angle3
    def check_angles(self):
        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()
class Equilateral(Triangle):
    angle=60
    def __init__(self):
        self.angle1= self.angle
        self.angle2= self.angle
        self.angle3= self.angle


#2

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.


#3

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?


#4

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


#5

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


#6

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