Yep. You have been lazy when “taping”. It’s not np.getFullpath() but np.node().getFullpath().
loader.loadModel() returns a NodePath instance (or None if the path has been wrong). The class NodePath does not have a method getFullpath. Only the class ModelRoot has such a method. And you get the model root node from the node path by using np.node().
More information is provided in the API documentation (above on this page, in the green bar, where Documentation is listed).