私は、オブジェクトのインスタンス化を反復処理すると複数のオブジェクトを作成するかどうかについて疑問を抱いていました。1つのインスタンス化に対する反復。なぜコンソールは2つの異なるオブジェクトを表示しますか?
class Foo:
def __init__(self, msg):
self.msg = msg
print(self.msg, self)
for i in range(7):
a = Foo(i)
しかし、コンソールは、この例を示します:私はチェックして、このテストをした私は1つのオブジェクトのみをインスタンス化していますと仮定
0 <__main__.Foo object at 0x010BA470>
1 <__main__.Foo object at 0x010BA4F0>
2 <__main__.Foo object at 0x010BA470>
3 <__main__.Foo object at 0x010BA4F0>
4 <__main__.Foo object at 0x010BA470>
5 <__main__.Foo object at 0x010BA4F0>
6 <__main__.Foo object at 0x010BA470>
、なぜコンソールを繰り返し、メモリ内の2つの異なるオブジェクトを報告し(0x010BA470と0x010BA4F0)?
あなたが作成したすべてのインスタンスへの参照を保持するとどうなるかを見るには '[Foo(i)for i in range(7)]'を試してください。 – jonrsharpe