id () s gebundener und ungebundener Methodenobjekte - manchmal für verschiedene Objekte gleich, manchmal für dasselbe Objekt unterschiedlich

Ich habe einen Code über gebundene und ungebundene Methoden ausprobiert. Wenn wir sie anrufen, denken wir, dass beide Objekte zurückgeben würden. Aber wenn ich benutzeid() Um Informationen zu erhalten, wird etwas zurückgegeben, das ich nicht verstehe.

IDE: Eclipse

Plugin: pydev

Class C(object):
    def foo(self):
        pass

cobj = C()

print id(C.foo)    #1
print id(cobj.foo) #2

a = C.foo
b = cobj.foo

print id(a)        #3
print id(b)        #4

Und die Ausgabe ist ...

5671672

5671672

5671672

5669368

Warum geben # 1 und # 2 dieselbe ID zurück? Sind sie nicht verschiedene Objekte? Und wenn wir vergebenC.foo undconj.foo Bei zwei Variablen geben # 3 und # 4 die unterschiedliche ID zurück.

Ich denke # 3 und # 4 zeigen, dass sie nicht dasselbe Objekt sind, sondern # 1 und # 2 ...

Was ist der Unterschied zwischen der ID der gebundenen Methode und einer ungebundenen Methode?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage