#!~/.virtualenvs/learning/bin/python class Rectangle(object): """calculates the area and perimeter of a rectangle""" def __init__(self, length, width, **kwargs): super(Rectangle, self).__init__(**kwargs) self.length = length self.width = width def area(self): return(self.length * self.width) def perimeter(self): return(2 * self.length + 2 * self.width) # Here we can declare the superclass for the subclass Square class Square(Rectangle): """calculates the area and perimeter of a square""" def __init__(self, length, **kwargs): super(Square, self).__init__(length=length, width=length, **kwargs) class Cube(Square): """calculates the surface area and volume of a cube""" def __init__(self, length, **kwargs): super(Cube, self).__init__(length=length, **kwargs) self.length = length def surface_area(self): face_area = super(Cube, self).area() return(6 * face_area) def volume(self): face_area = super(Cube, self).area() return(face_area * self.length) def area(self): return(self.length * self.length + 1) # return(super(Cube, self)) class Triangle(object): """calculates the area of a triangle""" def __init__(self, base, height, **kwargs): self.base = base self.height = height super(Triangle, self).__init__(**kwargs) def tri_area(self): return 0.5 * self.base * self.height class RightPyramid(Square, Triangle): """calculates the surface area of a right pyramid""" def __init__(self, base, slant_height, **kwargs): kwargs['height'] = slant_height kwargs['length'] = base super(RightPyramid, self).__init__(base=base, **kwargs) self.base = base self.slant_height = slant_height def area(self): base_area = super(RightPyramid, self).area() perimeter = super(RightPyramid, self).perimeter() return(0.5 * perimeter * self.slant_height + base_area) def area_2(self): base_area = super(RightPyramid, self).area() triangle_area = super(RightPyramid, self).tri_area() return(triangle_area * 4 + base_area) class new_cube(Cube): """docstring for new_cube""" def __init__(self, new_length): super(new_cube, self).__init__(length=new_length) self.new_length = new_length # print(RightPyramid.__mro__) pyramid = RightPyramid(2, 4) print(pyramid.area()) print(pyramid.area_2()) nc = new_cube(4) print(nc.surface_area()) square = Square(3) print(square.perimeter())