немного переформулировал и исправил пояснение к "self"