我已经尝试了一些关于绑定和未绑定方法的代码.当我们调用它们时,我认为它们都会返回对象.但是当我id()
用来获取一些信息时,它会返回一些我不理解的东西.
IDE:Eclipse
插件: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
Run Code Online (Sandbox Code Playgroud)
输出是......
5671672
5671672
5671672
5669368
Run Code Online (Sandbox Code Playgroud)
为什么#1和#2返回相同的ID?它们不是不同的对象吗?如果我们分配C.foo
和conj.foo
两个变量,#3和#4返回不同的id.
我认为#3和#4表明它们不是同一个对象,但#1和#2 ......
绑定方法的id和未绑定方法有什么区别?
让我们创建两个列表:
x = range(3)
y = range(3)
print id(x), id(y)
Run Code Online (Sandbox Code Playgroud)
日期:
4366592912 4366591040
Run Code Online (Sandbox Code Playgroud)
我创建了两个独立的列表,输出显示了两个不同的内存地址.这并不奇怪.但现在让我们在没有任务的情况下做同样的事情:
id(range(3))
Run Code Online (Sandbox Code Playgroud)
日期:
4366623376
Run Code Online (Sandbox Code Playgroud)
第二次:
id(range(3))
Run Code Online (Sandbox Code Playgroud)
日期:
4366623376
Run Code Online (Sandbox Code Playgroud)
我不知道如何解释这一点.为什么这两个未命名的列表具有相同的内存地址?