title: Why is binding a class instance method different from binding a class method?
body: <p>I was reading the <a href="https://docs.python.org/3/reference/datamodel.html" rel="noreferrer">python docs</a> and stumbled upon the following lines:</p>
  <blockquote>
  <p>It is also important to note that user-defined functions which are attributes of a class instance are not converted to bound methods; this only happens when the function is an attribute of the class.</p>
  </blockquote>
  <p>Please, someone explain what does that mean in plain english.</p>
  <p>I'm going to introduce some shorthand notation:</p>
  <p>let '<em>user-defined functions</em>' be denoted by <em>f</em>,</p>
  <p>let '<em>class instance</em>' be denoted by <em>ci</em> while <em>class</em> denoted simply by <em>c</em>. Obviously(?), ci = c(), with some abuse of notation.</p>
  <p>Also, allow membership statements to be recast in simple set notation eg '<em>user-defined functions which are attributes of a class instance</em>' in shorthand is '<em>vf: fεa(ci)</em>', where <em>v</em>: '<em>for all</em>' and where '<em>a</em>' is the shorthand for (set of) attributes (eg of a class or class instance) and 'ε' denotes the set membership function.</p>
  <p>Also, the process of binding a function is described in shorthand by ci.f(*args) or c.f(*args) =&gt; f(ci, *args) or f(c, *args) (the former referring to an <em>instance</em> method call while the later referring to a <em>class</em> method call)</p>
  <p>Using the newly introduced shorthand notation, does the quote from the docs imply that</p>
  <p>vf: fεa(c),  c.f(*args) =&gt; f(c, *args) is a true statement</p>
  <p>while</p>
  <p>vf: fεa(ci), ci.f(*args) =&gt; f(ci, *args) is false?</p>