self in Python
by Amit
self keyword is a reference to the invoking class instance/object. Consider the following code:
''' Self really refers to the instance called with ''' class Point: def __init__(self): print 'Self identifier:: ',id(self) if __name__ == '__main__': # create an instance of the class p = Point() print 'Point object identifier', id(p) # create an instance of the class p = Point() print 'Point object identifier', id(p)
As you can see, a class (that does nothing) called Point is defined and then two objects/instances are created. To verify that self is really a reference to the invoking object, we print the identifier for the calling object and self. Unsurprisingly, both are the same.
Update:
Soon after posting this, I realized that self is not a keyword. In fact its just a convention to use self as a reference to the invoking object. You can use anything else, for example, this:
class Point: def __init__(this): print 'This identifier:: ',id(this) if __name__ == '__main__': # create an instance of the class p = Point() print 'Point object identifier', id(p) # create an instance of the class p = Point() print 'Point object identifier', id(p)