What are the principles of object oriented design?
Implement those principles in a small shape-area model. Define an abstract shape interface, encapsulate shape dimensions, use polymorphism for area calculation, and aggregate multiple shapes.
Implement shape_area(shapes). shapes is a list of dictionaries with kind equal to "rectangle" or "circle", plus the corresponding numeric dimensions. Return the total area as a floating-point number rounded to six decimal places.
def shape_area(shapes):