Это очень семантически разные. self.
означает, что это переменная экземпляра, то есть каждый экземпляр имеет свою собственную. Вероятно, это самый распространенный вид, но не единственный. Кроме того, существуют переменные класса, определенные на уровне класса (и, следовательно, ко времени выполнения определения класса), и доступные в методах класса. Это эквивалентно большинству применений статических методов и, скорее всего, тому, что вы хотите, когда вам нужно делиться вещами между экземплярами (это совершенно правильно, хотя и не автоматически в одном и единственном случае для данной проблемы). Вы вероятно хотите один из них, в зависимости от того, что вы делаете. На самом деле, мы не можем прочитать ваши мысли и сказать, какой из них соответствует вашей проблеме.
Глобальные переменные - это отдельная история. Они, ну, глобально - у у всех есть тот же самый. Это почти никогда не является хорошей идеей (по причинам, объясненным во многих случаях), но если вы просто пишете быстрый и грязный сценарий и хотите поделиться чем-то между несколькими местами, они могут быть приемлемыми.