Возможный дубликат:
доступ к методам литералов int python
В Python everything is an object.
Но опять же, почему не работает следующий фрагмент?
1.__add__(2)
Однако это работает:
n = 1
n.__add__(2)
В чем разница между n и 1?
Разве это не сбой дизайна, что он не работает?
Например, он работает с литералами string.
"one".__add__("two")
Для сравнения, он хорошо работает и на других чисто объектно-ориентированных языках.
Давайте более подробно рассмотрим этот пример компиляции С#:
Console.WriteLine(100.ToString());
И снова, что отличает Python от C# в перспективе everything is an object?