Self ist zum Beispiel sinnvoll wenn du im Private, Public, protected etc. eine Variable mit gleichem Namen hast wie lokal in der Methode.
Bsp.:
Delphi-Quellcode:
TMyClass = class(TObject)
private
MeinWert: Integer;
[...]
procedure TMyClass.Test();
var
MeinWert: Integer;
begin
//Ändert "MeinWert" in dieser Procedure
MeinWert := 5;
//Ändert "MeinWert" aus Private
Self.MeinWert := 5;