Looking at the QGIS API Documentation:
bool QgsFeature::hasGeometry
Returns true if the feature has an associated geometry.
Is invalid geometry different from a feature having no associated geometry? If so, is there a tool like .hasGeometry in PyQGIS that returns whether or not the geometry is valid?