小编nis*_*vid的帖子

为什么一些引用`xy`的表达式会改变`id(xy)`?

这个问题属于(至少)CPython 2.7.2和3.2.2.

假设我们定义Classobj如下.

class Class(object):

    def m(self):
        pass

    @property
    def p(self):
        return None

    @staticmethod
    def s():
        pass

obj = Class()
Run Code Online (Sandbox Code Playgroud)

精简版

为什么下面的代码输出False为每个print()

print(Class.__dict__ is Class.__dict__)
print(Class.__subclasshook__ is Class.__subclasshook__)
print(Class.m is Class.m)

print(obj.__delattr__ is obj.__delattr__)
print(obj.__format__ is obj.__format__)
print(obj.__getattribute__ is obj.__getattribute__)
print(obj.__hash__ is obj.__hash__)
print(obj.__init__ is obj.__init__)
print(obj.__reduce__ is obj.__reduce__)
print(obj.__reduce_ex__ is obj.__reduce_ex__)
print(obj.__repr__ is obj.__repr__)
print(obj.__setattr__ is obj.__setattr__)
print(obj.__sizeof__ is obj.__sizeof__)
print(obj.__str__ is obj.__str__)
print(obj.__subclasshook__ is obj.__subclasshook__)
print(obj.m is obj.m)
Run Code Online (Sandbox Code Playgroud)

(这是用于Python 2;对于Python …

python cpython

6
推荐指数
1
解决办法
171
查看次数

标签 统计

cpython ×1

python ×1