title: Accessing attributes on literals work on all types, but not `int`; why?
body: <p>I have read that everything in python is an object, and as such I started to experiment with different types and invoking <em><code>__str__</code></em> on them &mdash; at first I was feeling really excited, but then I got confused.</p>
  
  <pre><code>&gt;&gt;&gt; "hello world".__str__()
  'hello world'
  &gt;&gt;&gt; [].__str__()
  '[]'
  &gt;&gt;&gt; 3.14.__str__()
  '3.14'
  &gt;&gt;&gt; 3..__str__()
  '3.0'
  &gt;&gt;&gt; 123.__str__()
    File "&lt;stdin&gt;", line 1
      123.__str__()
                ^
  SyntaxError: invalid syntax
  </code></pre>
  
  <ul>
  <li>Why does <code><em>something</em>.__str__()</code> work for "everything" besides <code>int</code>?</li>
  <li>Is <code>123</code> not an <em>object</em> of type <code>int</code>?</li>
  </ul>