I've been reading this tutorial on contracts and implementing them in Serpent and on the bottom of page 13:
Any time we reference a function within the contract, we must call it from self (a reference to the current contract). Note that any function can be called directly by a user. For example, lets say we have a function A and a function B. If B has the logic that sends ether and A just checks if the ether should be sent, and A calls B to send the ether, an adversary could simply call function B and get the ether without ever going through the check. We can fix this by not putting that type of logic in separate functions.
It's not clear to me whether functions A and B are part of the same contract. Is it possible for a contract to call a function from another on the same node? If yes, how does it or how can it know its instance (the self)?