title: How is `getattr` related to `object.__getattribute__` and to `object.__getattr__`?
body: <p>From <a href="https://docs.python.org/3.6/library/functions.html#getattr" rel="noreferrer">https://docs.python.org/3.6/library/functions.html#getattr</a></p>
  
  <blockquote>
  <pre><code>getattr(object, name[, default])
  </code></pre>
    
    <p>Return the value of the named attribute of <code>object</code>. name must be a
    string. If the string is the name of one of the object’s attributes,
    the result is the value of that attribute. For example, <code>getattr(x,
    'foobar')</code> is equivalent to <code>x.foobar</code>. If the named attribute does
    not exist, <code>default</code> is returned if provided, otherwise
    <code>AttributeError</code> is raised.</p>
  </blockquote>
  
  <p>How is <code>getattr</code> related to <code>object.__getattribute__</code> and to <code>object.__getattr__</code>?</p>
  
  <p>Does <code>getattr</code> call <code>object.__getattribute__</code> or <code>object.__getattr__</code>? I would guess the former? </p>