時に新しいインスタンスを作成しないと、私はここで本当に基本的な何かが欠けていますことが、私は次のようにクラスを定義するときにする可能性があります。クラスを繰り返し呼び出し
class Arbitrary(object):
"""Arbitary class to test init"""
def __init__(self):
self.x = dict()
と繰り返しは、次のよう
でクラスをインスタンス化for i in range(5):
a = Arbitrary()
print '{} {} {} {}'.format(i, a, id(a), a.x)
私はそれが期待しているように全く新しいインスタンスArbitrary()
を取得していません。実際、私は2つのインスタンスの繰り返しを得ています:
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 {}
なぜですか?
Arbitrary()
を呼び出すたびにまったく新しいインスタンスが返されるように、__init__
を自分のクラスに定義するにはどうすればよいですか?
これらのオブジェクトは、次の反復によって除去し、それらへの参照のみを持っています。ではなぜ通訳は記憶を再利用しないでしょうか? –
これは、この問題を説明する極端な例でした。私の経験では、Arbitrary()への2回の別々の呼び出しが同じインスタンスを返すため、目的が無効になりました。なぜそれが起こっているのか理解しようとしています。ありがとう。 –
代わりに 'Arbitrary'オブジェクトのリストを作り、それがまだ起こっているかどうかを確認してください。 –