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?