首页 > 解决方案 > 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]

我希望这段代码的作用是让数组在内部数字发生变化时自行更新。我知道我可以通过制作另一个功能来做到这一点,但是还有其他方法可以让这项工作更优雅吗?

标签: python

解决方案


在您当前的代码中,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]

推荐阅读