Por que os métodos de diferentes objetos da mesma classe possuem o mesmo id?

No código a seguir, não entendo por queuseless_func tem o mesmo id quando pertence a dois objetos diferentes?

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