self указывает на текущий экземпляр класса.
То есть, например, есть класс Человек, которому при создании можно указать имя и возраст. Можно создать двоих людей и у каждого внутри своего класса будет свой self. Self нам позволяет обратиться к атрибутам и методам конкретного экземпляра класса.
class Human(object):
def __init__(self, name, age):
self.name = name
self.age = age
old_man = Human('Vasilich', 88)
young_man = Human('Petya', 6)
print(old_man.name, old_man.age)
print(young_man.name, young_man.age)
>>> 'Vasilich', 88
>>> 'Petya', 6
Это без учёта наследования классов, там другая специфика. Пока для понимания основ этого достаточно.