Basically self is a reference (kind of like a pointer, but self is a special reference which you can not assign to) to an object, and __init__ is a function which is called to initialize the object - that is, set the values of variables etc. - just after memory is allocated for it.