Dlaczego metody różnych obiektów tej samej klasy mają ten sam identyfikator?

W poniższym kodzie nie rozumiem dlaczegouseless_func ma ten sam identyfikator, gdy należy do dwóch różnych obiektów?

class parent(object):
   @classmethod
   def a_class_method(cls):
     print "in class method %s" % cls

   @staticmethod
   def a_static_method():
     print "static method"

   def useless_func(self):
     pass

 p1, p2 = parent(),parent()

 id(p1) == id(p2) // False

 id(p1.useless_func) == id(p2.useless_func) // True

questionAnswers(2)

yourAnswerToTheQuestion