Just a note - unless you need to cast "self" to a more derived type, like
amgepo mentioned, or pass it as a function's parameter, you shouldn't need to use "self". For example, the following two lines of code are exactly equivalent, although I'm not sure if the compiler does enough optimisation to make them equally efficient:
self.SomeFunction()
SomeFunction
Casting "self" to a more derived type is only useful if you want to have a script attached to objects of various types in the same hierarchy, such as http://www.creationkit.com/ObjectReference_Script and http://www.creationkit.com/Actor_Script, but generally that's probably not something you'll need to do.
Cipscis