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 {}
可能是我在这里遗漏了一些非常基本的东西,但是当我按以下方式定义 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 {}