Objects So far we have been doing procedural programming, i.e., programming with procedures/functions. Python supports objects too. So, we will taste a bit of object-oriented programming, i.e., programming with objects. I will try to give you a flavor of object-oriented programming in Python without getting deeply into it. We have seen most of the built-in types, i.e., the types that come with the base language Python. There were two kinds: 1. atomic data types, e.g., int, float, bool 2. built-in compound data types, e.g., list, tuple, str We can even create types that we as a programmer can define ourselves, which are usually compound: 3. user-defined compound data types Here, by 'user' we mean a Python programmer. In Python, we create a new user-defined type by creating a new 'class'. Once we create a class, which is a type, we can create instances (also known as objects) of that class (type). For example, if we create a class named Point, we can create point instances (objects) such as p1, p2, p3, etc. See points.py for details. Incidentally, even the primitive data types are actually represented as objects, but we won't get into that here.