相关疑难解决方法(0)

绑定和未绑定方法对象的id() - 有时对于不同的对象是相同的,有时对于同一对象是不同的

我已经尝试了一些关于绑定和未绑定方法的代码.当我们调用它们时,我认为它们都会返回对象.但是当我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.fooconj.foo两个变量,#3和#4返回不同的id.

我认为#3和#4表明它们不是同一个对象,但#1和#2 ......

绑定方法的id和未绑定方法有什么区别?

python methods object

29
推荐指数
2
解决办法
5569
查看次数

Python方法访问器在每次访问时创建新对象?

在调查另一个问题时,我发现了以下内容:

>>> class A:
...   def m(self): return 42
... 
>>> a = A()
Run Code Online (Sandbox Code Playgroud)

这是预期的:

>>> A.m == A.m
True
>>> a.m == a.m
True
Run Code Online (Sandbox Code Playgroud)

但是,这我也没有想到:

>>> a.m is a.m
False
Run Code Online (Sandbox Code Playgroud)

尤其不是这个:

>>> A.m is A.m
False
Run Code Online (Sandbox Code Playgroud)

Python似乎为每个方法访问创建新对象.为什么我看到这种行为?也就是说,它为什么不能每个类重用一个对象,每个实例一个?

python methods python-internals

9
推荐指数
2
解决办法
223
查看次数

标签 统计

methods ×2

python ×2

object ×1

python-internals ×1