Я на самом деле просматривал дескрипторы документы Python и наткнулся на этот пример
>>> class D(object):
def f(self, x):
return x
>>> d = D()
>>> D.__dict__['f'] # Stored internally as a function
<function f at 0x00C45070>
>>> id(D.__dict__['f']) # Memory location
49294384
>>> D.f # Get from a class becomes an unbound method
<unbound method D.f>
>>> id(D.f )
48549440
>>> d.f # Get from an instance becomes a bound method
<bound method D.f of <__main__.D object at 0x00B18C90>>
>>> id(d.f)
48549440
Итак, из приведенного выше кода я понял, что Python хранит function definition/declaration
класса какотдельный объект внутри переменной класса __dict__
, когда мы обращаемся напрямую с помощью переменной __dict__
, она имеет место в памяти как 49294384
Но почему он отображается как другой объект функции / метода с разными memory location 48549440
при доступе через Class or Object?
как D.f and d.f
не предполагалось ли ссылаться на один и тот же объект при доступе с помощью переменной __dict__
?Если так, почему?