Python 我可以让相同值的不同变量指向不同的对象吗?

Python 我可以让相同值的不同变量指向不同的对象吗?,python,python-3.x,immutability,Python,Python 3.x,Immutability,我想这个问题可能已经有了答案,但我似乎找不到答案。如果您找到答案,请将其标记为重复 我不是问为什么,但我怎么能不让这种事情发生呢? 我希望j具有与I不同的id 当我说的时候 >>> i = 6 >>> j = 6 >>> id(i) 10919584 >>> id(j) 10919584 #I don't want this, I want j to point to a different object 所以,我知道上

我想这个问题可能已经有了答案,但我似乎找不到答案。如果您找到答案,请将其标记为重复

我不是问为什么,但我怎么能不让这种事情发生呢?

我希望
j
具有与
I
不同的
id

当我说的时候

>>> i = 6
>>> j = 6
>>> id(i) 
10919584
>>> id(j)
10919584 #I don't want this, I want j to point to a different object
所以,我知道上面代码中发生了什么(或者至少我认为我知道),但我的问题是如何防止它

我问它只是出于好奇,它可能有也可能没有任何实际用途或相关性


这个可能的用途有点奇怪;我找到的选项是:

class NoFixedInt(int):
  pass

a = NoFixedInt(6)
b = NoFixedInt(6)
c = NoFixedInt(6)

print id(a)
# 4485155368
print id(b)
# 4485155656
print id(c)
# 4485155728

当然,我不知道这是否适用于您,因为它有一个问题,即您必须强制转换所有内容,但它确实起到了作用。

如果您想要一个自定义类型,其中6可能有多个实例化,我建议您创建它吗?我尝试了
int(“6”)
int(6)
,这在其他语言中可以提供这种功能,但在python中找不到。python为-5到256之间的所有整数保留一个整数对象数组,所以对于这些值中的任何一个,您都会得到这种行为。@Thierrylahuille谢谢,我现在明白了。请把它写下来作为答案,我会接受的。这个很好用,谢谢。因为这只是出于好奇,这个解决方案有点完美,因为我也可以执行数学运算。