Do you understand OOP principles well?
Implement a polymorphic shape model using encapsulation, inheritance, and method overriding. Define shape_areas(shapes), which accepts a list of shape dictionaries and returns each area rounded to two decimal places.
Each dictionary has type: "circle" with radius, or type: "rectangle" with width and height.
def shape_areas(shapes):