Class 不在重复调用时创建新实例

Class not creating new instances upon repeated calls

可能是我在这里遗漏了一些非常基本的东西,但是当我按以下方式定义 class 时:

class Arbitrary(object):
    """Arbitary class to test init"""
    def __init__(self):
        self.x = dict()

并按以下方式重复实例化class

for i in range(5):
    a = Arbitrary()
    print '{}  {}  {}  {}'.format(i, a, id(a), a.x)

我没有像预期的那样获得 Arbitrary() class 的全新实例。事实上,我重复了两个实例:

0  <__main__.Arbitrary object at 0x1006cb110>  4302090512  {}
1  <__main__.Arbitrary object at 0x1006cb190>  4302090640  {}
2  <__main__.Arbitrary object at 0x1006cb110>  4302090512  {}
3  <__main__.Arbitrary object at 0x1006cb190>  4302090640  {}
4  <__main__.Arbitrary object at 0x1006cb110>  4302090512  {}

这是为什么?

如何在我的 class 中定义 __init__ 以便每次对 Arbitrary() 的新调用都会 return 一个全新的实例?

我不是 Python 专家,但我可以看出你在压倒你的例子。我尝试将其更改为以下并且运行正常:

#!/bin/env python

class Arbitrary(object):
    """Arbitary class to test init"""
    def __init__(self):
        self.x = dict()

a = []
for i in range(5):
    a.append(Arbitrary())
    print '{}  {}  {}  {}'.format(i, a[i], id(a[i]), a[i].x)

结果:

ckim@stph45:~/python/test2] test2.py
0  <__main__.Arbitrary object at 0x7fc6952b6090>  140490882900112  {}
1  <__main__.Arbitrary object at 0x7fc6952b6250>  140490882900560  {}
2  <__main__.Arbitrary object at 0x7fc6952b6290>  140490882900624  {}
3  <__main__.Arbitrary object at 0x7fc6952b62d0>  140490882900688  {}
4  <__main__.Arbitrary object at 0x7fc6952b6310>  140490882900752  {}