(I'm sure this is a FAQ, but also hard to google)
Why does Python use abs(x) instead of x.abs?
As far as I see everything abs() does besides calling x.__abs__ could just as well be implemented in object.abs()
Is it historical, because there hasn't always been a root class?
I think you are looking a typical example where a language designer decides that readability and terseness trump purist constructs.
Why builtin functions instead of root class methods?