摆脱python 2.7下的小整数缓存

时间:2017-03-02 17:18:20

标签: python python-2.7

我依靠id(obj)来区分项目中的两个对象。但是,由于python的小值缓存,当对象是小整数时,这不起作用。以下两个元素具有相同的ID。

self.a = 0
self.b = 0
# id(self.a) is the same as id(self.b)

有没有办法让id(self.a)与id(self.b)不同但仍保留上面列出的语法?

谢谢!

编辑: 请参阅以下示例

class B:
  def __init__(self):
    self.b = 0

  def eat( self ):
    self.b = 0

class A:
  def __init__(self):
    self.b = B()
    self.a = 0

  def eat1( self ):
    self.a = 0

  def eat2( self ):
    self.b.b = 0

a = A()
a.b.eat()
a.eat2()

基本上a.b.eat()正在访问与a.eat2()相同的变量,而eat1()正在访问另一个变量。但是,self.b.b和self.a具有相同的id,这使得很难区分它们。

0 个答案:

没有答案