Acessar atributos em literais funciona em todos os tipos, mas não em `int`; porque? [duplicado]

Esta questão já tem uma resposta aqui:

Por que “1.real” é um erro de sintaxe, mas “1 .real” é válido em Python? 3 respostas

Eu li que tudo em python é um objeto, e como tal eu comecei a experimentar com diferentes tipos e invocando__str__ neles - no começo eu estava me sentindo muito animado, mas depois fiquei confuso.

>>> "hello world".__str__()
'hello world'
>>> [].__str__()
'[]'
>>> 3.14.__str__()
'3.14'
>>> 3..__str__()
'3.0'
>>> 123.__str__()
  File "<stdin>", line 1
    123.__str__()
              ^
SyntaxError: invalid syntax
Porquesomething.__str__() trabalho para "tudo" alémint123 não é umobjeto do tipoint?

questionAnswers(4)

yourAnswerToTheQuestion