an instance (the usual waywhere python sends the instance to the self argument automaticallyor through the class (the less common schemewhere you must pass the instance manuallyin more symbolic termsrecall that normal method call of this forminstance method(args is automatically translated by python into this equivalent formclass method(instanceargs where the class containing the method to be run is determined by the inheritance search rule applied to the method' name you can code either form in your scriptbut there is slight asymmetry between the two--you must remember to pass along the instance manually if you call through the class directly the method always needs subject instance one way or anotherand python provides it automatically only for calls made through an instance for calls through the class nameyou need to send an instance to self yourselffor code inside method like giveraiseself already is the subject of the calland hence the instance to pass along calling through the class directly effectively subverts inheritance and kicks the call higher up the class tree to run specific version in our casewe can use this technique to invoke the default giveraise in personeven though it' been redefined at the man ager level in some sensewe must call through person this waybecause self giver aise(inside manager' giveraise code would loop--since self already is managerself giveraise(would resolve again to manager giveraiseand so on and so forth recursively until available memory is exhausted this "goodversion may seem like small difference in codebut it can make huge difference for future code maintenance--because the giveraise logic lives in just one place now (person' method)we have only one version to change in the future as needs evolve and reallythis form captures our intent more directly anyhow--we want to perform the standard giveraise operationbut simply tack on an extra bonus here' our entire module file with this step appliedadd customization of one behavior in subclass class persondef __init__(selfnamejob=nonepay= )self name name self job job self pay pay def lastname(self)return self name split()[- def giveraise(selfpercent)self pay int(self pay ( percent)def __repr__(self)return '[person% % ](self nameself payclass manager(person) more realistic example