self
- это ссылка на экземпляр класса.
self.color
это атрибут экземпляра класса.
self.saveColor(self, color)
- это метод класса, привязанный к каждому экземпляру класса.
Экземпляры вашего класса Уток обладают свойством - цветом.
Если представить себе класс как таблицу уток, то в этой таблице экземпляры - это строки, и есть колонка «color», это и есть атрибут, у каждой строки своё значение (у каждой утки свой цвет).
Методы класса (self.saveColor(self, color)
, например) - это его встроенные инструменты, которые позволяют поменять какой-либо атрибут экземпляра или что-то сделать с экземпляром. Вроде как кнопки и регуляторы на пультике управления экземпляром.
Метод - это как функция, только крепко привязанная к экземпляру. У метода могут быть аргументы - self
, который должен быть в каждом методе, и color
, который не обязан быть в других методах, а только в тех, где это действительно нужно (фактически, только в этом).
self
привязывает метод к экземпляру, а color
позволяет передать в метод значение снаружи, чтобы внутри метода это значение связать с атрибутом (в данном случае атрибутом self.color
) экземпляра.