我昨天问了这个问题,但我把问题写得太糟了,当我意识到我输入的内容时,所有的回答都是另一个我没有的错字问题的解决方案。对不起,上次打错了
我有两个类,我希望它们能够共享一个公共列表,而不必将其作为参数传递。我还想创建一个方法来置乱这个列表,我希望这个列表在类a和类B中都是相同的新置乱的列表
我认为这是继承的一个例子,所以我创建了一个父类,将list设置为Class属性,并创建了一个方法来置乱,但奇怪的是,list变量现在被视为子类的实例变量
class A:
lst = []
target = 0
def generateNewLst(self, randomRange, listSize):
self.lst = [random.randint(*randomRange) for i in range(listSize)]
class B(A):
pass
class C(A):
pass
我继承的方法工作得很好:
a = B()
a.generateNewLst((0, 10), 3)
a.lst # => [2,5,7]
但当我创建另一个B:
b = B()
b.lst # => [] not shared when I want it to be
这不能用B中的class属性来解决,因为这不能解决下面更重要的问题
c = C()
c.lst # => [] not shared when I want it to be
热释光;DR:我想要一个Class属性,它在两个类的每个实例之间共享。每次对其中一个实例运行generateNewList时,我都希望a.lst==b.lst==c.lst
我应该如何重新组织我的设置以我想要的方式工作
你需要一个静态变量。为此,使方法
generateNewLst
静态,并让他更新静态变量lst
,而不是属于类实例而不是类本身的成员变量lst
一旦你生成了lst,你将拥有所有类的lst
相关问题 更多 >
编程相关推荐