私は最近、この奇妙な Python の「バグ」を見つけたので、誰か詳しく知っているかどうか知りたいと思いました!
たとえば、python モジュールを使用します。
import random
class SaySomething:
def __init__(self, value=random.randint(1, 3)):
if value == 1: print 'one'
elif value == 2: print 'two'
elif value == 3: print 'three'
a = 0
while a < 10:
SaySomething()
a += 1
このコードは、何らかの理由で同じ番号を 10 回出力します!!! 今、これは私にはわかりません。コンストラクターが同じ値で 10 回連続して呼び出されているようです。しかし、それぞれを印刷するSaySomething()
と、それらはすべて異なるポインター アドレスを持っていることがわかります。したがって、それらは同じオブジェクトではありません。
変更した場合:
SaySomething()
に
SaySomething(random.randint(1, 3))
実際のランダムな選択が行われ、期待どおりに実行されます。
なぜこれが起こるのか知っている人はいますか?