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.