Объектно- ориентированное
программирование

определение
Объект - контейнер объединяющий:

- данные (информация об объекте)
- состояния (функции, которые возвращают данные объекта)
- поведения (функции, которые влияют на данные объекта)

В языке Python все элементы кода являются объектами.

Класс - шаблон для создания объекта.Состав класса:

- конструктор (__new__ - функция вызывается при объявлении экземпляра класса)
- инициализатор (__init__ - функция вызывается при объявлении экземпляра класса)
- параметры (данные класса)
- свойства (функции организующие доступ к данным - состояние)
- методы (функции позволяющие изменять данные - поведение)
Пример

class Person:
     # Инициализатор класса
    def __init__(self, name:str, email:str, password: str):
        # Атрибуты, которые необходимо указать при создании экземпляра класса
        self.name = name
        self.email = email
        self.password = password

    # Атрибуты присущие всем экземплярам класса
    group_id = 'Пользователь'

    # Свойство класса для доступа к атрибуту
    def group_id(self) -> str:
        return self.group_id

    #Метод
    def get_group_id(self, group: str) -> None:
        self.group_id = group