gpt4 book ai didi

python - 如何在继承实例之间共享类变量?

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:09 24 4
gpt4 key购买 nike

我有两个类,我希望它们能够共享一个公共(public)列表,而不必将其作为参数传递。我还想创建一个方法来打乱该列表,并且我希望该列表与 A 类和 B 类中新打乱的列表相同。

我认为这是继承的情况,所以我创建了一个父类并将列表设置为类属性并创建了一个方法来进行打乱,但奇怪的是列表变量现在被视为子类的实例变量。

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]

但是当我创建另一个 A 时:

b = B()
b.lst # => [] not shared

我知道这可以通过将我的 lst 变量设置为 A 特定类属性来解决,但这并不能解决下面更重要的问题...

c = C()
c.lst # => [] not shared

我应该如何重新组织我的设置以按照我想要的方式工作?

最佳答案

self 是一个实例,因此设置 self.lst 仅在该实例上设置。您想要在类 A 上设置此变量:

A.lst = [...]

关于python - 如何在继承实例之间共享类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58152393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com