A #class in #object-oriented-programming describes what the data looks like (the state) and what the data can do (the behavior). An #object is an instance of a #class. ### Data Types 1. int 2. float 3. bool ```python x = 1 x = True ``` Variables can be defined into other data types. When this happens, python dynamically changes the data type. Here `x` changed from an **int** to a **bool**. ### Collections A #list is an ordered collection of zero or more references to python data objects. ```python list_ex = [1,2,3] ``` ![[Screenshot 2024-05-31 at 9.13.22 AM.png]] ```python list_ex = [0] * 6 >>> [0,0,0,0,0,0] ``` ![[Screenshot 2024-05-31 at 9.15.11 AM.png]] A #string is a sequential collection of zero or more letters, numbers, or any other symbols. Values are also known as **characters**. ![[Screenshot 2024-05-31 at 9.20.06 AM.png]] #list are **mutable** and #string are **immutable**. **Mutability** refers to it being able to be modified. A #tuple is like a #list but are **immutable** like #string. ```python tuple_ex = (2, True, 4) ``` A #set is an unordered collection of zero or more **immutable** data objects. - No **duplicates** #### Heterogeneous #set, #list, and #tuple are all **heterogeneous**, meaning they can contain elements of different data types.