função id no Python 2.7, operador `is`, identidade do objeto e métodos definidos pelo usuário [duplicate]

Esta pergunta já tem uma resposta aqui:

id () s de objetos de método vinculados e não acoplados - às vezes o mesmo para objetos diferentes, às vezes diferentes para o mesmo objeto 2 respostas

Os resultados do código abaixo no Python 2.7 me pareceram uma contradição. Ois operador @ deve trabalhar com a identidade do objeto e oid. Mas os resultados divergem quando estou analisando um método definido pelo usuário. Por que é que

py-mach >>class Hello(object):
...  def hello():
...    pass
...
py-mach >>Hello.hello is Hello.hello
False
py-mach >>id(Hello.hello) - id(Hello.hello)
0

Eu encontrei o seguinte trecho da descrição doPython data model um pouco útil. Mas isso realmente não deixou tudo claro. Por que oid função @ retorna o mesmo número inteiro se os objetos de método definidos pelo usuário forem construídos novamente a cada ve

Objetos de método definidos pelo usuário podem ser criados ao obter um atributo de uma classe (talvez por meio de uma instância dessa classe), se esse atributo for um objeto de função definido pelo usuário, um objeto de método definido pelo usuário não vinculado ou um objeto de método de classe . Quando o atributo é um objeto de método definido pelo usuário, um novo objeto de método é criado apenas se a classe da qual está sendo recuperada for a mesma ou uma classe derivada da classe armazenada no objeto de método original; caso contrário, o objeto do método original será usado como ele

questionAnswers(2)

yourAnswerToTheQuestion