I am new to OOP programming in python and I was wondering why python let us create new attributes at an object instance. What is the point of creating a new attribute that doesn't follow the design of the class ?
class Shark: def __init__(self, name, age): self.name = name self.age = age new_shark = Shark("Sammy", 5) print(new_shark.age) new_shark.pi = 3.14 print(new_shark.pi) I expected that python will produce an error but it prints 3.14
*Each answer covered a different spectrum. Thank you very much