Классы и объекты в python, self?
в него попадает название экземпляра класса
Экземпляр может быть безымянным (например, лежать в списке), но идея в принципе верна - в self попадает id объекта:class A:
    def f(self):
        print(self)
        print(hex(id(self)))

a = A()
a.f()не понимаю зачем нужен атрибут self
Не уверен, что понимаю вопрос - настолько очевиден ответ, к тому же следующий прямо за вопросом. Смотрите на это как на синтаксический сахар: при вызове метода вы пишете экземпляр.метод(аргументы), а в реализации def метод(экземпляр, аргументы). Имя первого аргумента вообще-то произвольное, обычно пишут "self", но python3 допускает даже русский идентификатор "экземпляр", можете попробовать.
Так как по некоторым причинам в питоне нет контекстов и областей видимости, то функции-классов нужно передавать в явном виде ссылку на экземпляр объекта, которая и передается первым аргументом в качестве self.
Собственно, сами классы в питоне организованы через великий dict!>>> class T():
...  def a(self):
...     print self.test
... 
>>> a = T()
>>> a.test =1
>>> b= T()
>>> b.test =2
>>> a.a()
1
>>> b.a()
2
>>> T.a(b)
2
>>> T.a(a)
1