Когда мы заявляем y.addtwice ('cat'), к 'self' добавляется 'cat', а не self.data
Это неверно.cat
фактически добавляется к self.data
.Почему вы думаете, что он был добавлен к self
?
y.add('dog')
- это то же самое, что и Bag.add(y, 'dog')
.Так что add
действительно выполняет y.data.append('dog')
, вместо него принято использовать имя self
.
y.addtwice('cat')
- это то же самое, что и Bag.addtwice(y, 'cat')
.Так что addtwice
действительно делает y.add('cat')
дважды, что аналогично Bag.add(y, 'cat')
дважды.Таким образом, addtwice
действительно выполняет y.data.append('cat')
дважды.
self
в каждом методе экземпляра - это просто автоматически добавляемая переменная, указывающая на экземпляр , который она называетсяв этом случае y
.