python - Python:如何自动更新数组中的引用元素?
问题描述
我做了一个看起来像这样的类:
import numpy.random as rand
class Dice:
def __init__(self):
self.x=0
def roll(self):
self.x=int(rand.randint(1,7,1))
print(self.x)
现在,我想掷两个骰子并用结果制作一个数组。
A=Dice()
B=Dice()
aaa=[A.x, B.x]
print(aaa)
A.roll()
B.roll()
print(aaa)
结果如下所示:
[0, 0]
2
4
[0, 0]
我希望这段代码的作用是让数组在内部数字发生变化时自行更新。我知道我可以通过制作另一个功能来做到这一点,但是还有其他方法可以让这项工作更优雅吗?
解决方案
在您当前的代码中,aaa
一旦该行被执行,值 in 是固定的。您应该保存 Dice 的实例。该repr
方法用于将类内的信息传递出去。
import numpy.random as rand
class Dice:
def __init__(self):
self.x=0
def roll(self):
self.x=int(rand.randint(1,7,1))
print(self.x)
def __repr__(self):
return str(self.x)
A=Dice()
B=Dice()
aaa=[A, B]
print(aaa)
A.roll()
B.roll()
print(aaa)
结果:
[0, 0]
4
6
[4, 6]