I generally use exported nodepath variables for getting nodes that are not children to the node with the script:
export (NodePath) var path_to_node = null
var _node
func _ready():
if (path_to_node != null):
_node = get_node(path_to_node)
else:
print ("NodePath not set in the Godot editor...")
I do not know if it is the best way, but I've used it for many scripts and it works fairly well.