title: python can't set attributes of built-in/extension type 'object'
body: <p>Python seems disallow you to assign attribute to the internal highest level of 'object':</p>
  
  <pre><code>object.lst=lambda o:list(o)
  </code></pre>
  
  <p>Or</p>
  
  <pre><code>func=lambda o:list(o)
  setattr(object,'lst',func)
  </code></pre>
  
  <p>All generate error messages.
  Any design reason behind it? Honestly, this is odd, since everything is an object, and you can define <code>func(obj)</code> as you wish, so if func is not constraint the argument type, why the method way is prohibited to add then?
  <code>obj.func()</code> is exactly func(obj) if you assign the func as an attribute to the <code>object</code>. Since everything is an object,an attribute of the object is a global function almost by definition.</p>
  
  <p>Anyway to walk-around?</p>
  
  <p>Basically if you have the capability to add some functions to build-in types, you can do pipeline style programming:<code>obj.list().len().range()</code> and I think the readibility of this type program is very clear and nothing non-pythonic.</p>