¿Por qué los métodos de diferentes objetos de la misma clase tienen la misma identificación?

En el siguiente código, no entiendo por quéuseless_func ¿Tiene el mismo id cuando pertenece a dos 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

Respuestas a la pregunta(2)

Su respuesta a la pregunta