我最近刚刚发现了这个奇怪的 Python 'bug',我想看看是否有人知道更多关于它的信息!
以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))
它按预期运行,并做出了实际的随机选择。
有谁知道为什么会这样?