1
从命令式编程背景来看,令人惊讶的是,赋值运算符“=”使两个变量名指向内存中的相同位置,而不是从内存中复制内存中的值独特的对象到另一个。这种模式既出现在本地数据类型(如列表)中,也出现在使用'class'关键字定义的类中。然而,我注意到这条规则的一个例外:在Python中使用唯一的内存位置创建对象
a = 2
if id(a) == id(2):
print "The id function returns the object's address in memory."
a = 3
if id(a) != id(2):
print "The hardcoded integer '2' does not get its address in memory re-assigned to that of 3"
这两个条件都满足了。他们有必要这样做,否则自然数的构建就会崩溃。有什么方法可以在我定义的类中利用这个常量?我希望有些课程不像“ls -s”,更像是“cp”。
这仅适用于-5到256之间的整数。请参阅此问题以获取更详细的解释:http://stackoverflow.com/questions/306313/python-is-operator-behaves-unexpectedly-with-integers – Blender
复制模块/协议(http://docs.python.org/2/library/copy.html)是否提供了您想要的内容,或者您是否对覆盖分配特别感兴趣?如果是后者,可以使用描述符协议(http://docs.python.org/2/howto/descriptor.html)获得类似的内容,但它仍然不是您想要的。 – jcrudy
复制模块确实提供了我正在寻找的内容。非常感谢你。 – seewalker