Sure.
In the engine, when a new task can be executed here 24.
It first does some checking and input/output preparation here 8.
It then does all the required hooks, the use the operator() function on the actual Node (previously called Function) here 13.
This is routed to the main Node class here 9.
Which calls the apply function of Node, which is a PyNode in your case as it is implemented in python.
And the PyNode gets and calls the .apply attribute from the class instance here 17.
Looking at it this way, there are a few levels of indirection indeed