title: Why are python static/class method not callable?
body: <p>Why are python instance methods callable, but static methods and class methods not callable?</p>
  
  <p>I did the following:</p>
  
  <pre><code>class Test():
      class_var = 42
  
      @classmethod 
      def class_method(cls):
          pass 
  
      @staticmethod
      def static_method():
          pass
  
      def instance_method(self):
          pass 
  
  for attr, val in vars(Test).items():
      if not attr.startswith("__"):
          print (attr, "is %s callable" % ("" if callable(val) else "NOT"))
  </code></pre>
  
  <p>The result is:</p>
  
  <pre><code>static_method is NOT callable
  instance_method is  callable
  class_method is NOT callable
  class_var is NOT callable
  </code></pre>
  
  <p>Technically this may be because instance method object might have a particular attribute (not) set in a particular way (possibly <code>__call__</code>). Why such asymmetry, or what purpose does it serve?</p>
  
  <p>I came across this while learning python inspection tools.</p>
  
  <p><strong>Additional remarks from comments:</strong></p>
  
  <p><em>The SO answer linked in the comments says that the static/class methods are <a href="https://docs.python.org/3/howto/descriptor.html" rel="noreferrer">descriptors</a> , which are not callable. Now I am curious, why are descriptors made not callable, since descriptors are class with particular attributes (one of <code>__get__</code>, <code>__set__</code>, <code>__del___</code>) defined.</em></p>