Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 为什么实例方法指向相同的地址,但不是相同的对象?_Python 3.x_Memory - Fatal编程技术网

Python 3.x 为什么实例方法指向相同的地址,但不是相同的对象?

Python 3.x 为什么实例方法指向相同的地址,但不是相同的对象?,python-3.x,memory,Python 3.x,Memory,我有以下定义一个类和两个类对象的最小代码: class A(): def instance_method(self): pass a1 = A() a2 = A() a1和a2似乎不共享相同的实例方法,这对我来说很有意义 assert a1.instance_method is not a2.instance_method 但是,当我检查这两个方法的ID时,它们看起来是相同的 assert id(a1.instance_method) == id(a2.instan

我有以下定义一个类和两个类对象的最小代码:

class A():
    def instance_method(self):
        pass

a1 = A()
a2 = A()
a1
a2
似乎不共享相同的实例方法,这对我来说很有意义

assert a1.instance_method is not a2.instance_method
但是,当我检查这两个方法的ID时,它们看起来是相同的

assert id(a1.instance_method) == id(a2.instance_method)

所以我对实例是否共享实例方法有点困惑。。任何人都可以在记忆中了解这里发生了什么?谢谢。

这回答了你的问题吗?谢谢,但是没有。在发射这个q之前读一下。经过进一步的研究,我发现这里可能有一种叫做描述符的东西在起作用;我想从中找出一些道理。