gpt4 book ai didi

python - 为什么所有类(class)都会受到一个类(class)变化的影响?

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:30 27 4
gpt4 key购买 nike

我有两个从基类继承功能的对象。我希望能够独立地对这些类进行更改,同时共享基类的功能。但是,我发现对一个对象的更改会影响另一个对象。我以前从未遇到过这个问题。这是怎么回事?

这是一个如何设置的示例:

#!/bin/python3


class Base(object):
inputs = []

def __init__(self, inputs):
for i in inputs:
self.inputs.append(i)


class Thing1(Base):

def __init__(self, inputs):
super(Thing1, self).__init__(inputs)


class Thing2(Base):

def __init__(self, inputs):
super(Thing2, self).__init__(inputs)


t1 = Thing1(["Llama"])
print(t1.inputs)
t2 = Thing2(["Donkey", "Goat"])
print(t2.inputs)
print(t1.inputs)

这将打印以下内容:

['Llama']
['Llama', 'Donkey', 'Goat']
['Llama', 'Donkey', 'Goat']

我要它打印:

['Llama']
['Donkey', 'Goat']
['Llama']

我如何从我正在做的事变成我想做的事?为什么我的类(class)没有独立更新?

编辑:已解决。感谢 Mark Meyer 提供的解决方案:

class Base(object):

def __init__(self, inputs):
self.inputs = []
for i in inputs:
self.inputs.append(i)

最佳答案

您需要在__init__() 中定义输入 和实例属性。否则,您只有一个在实例之间共享的类属性。

class Base(object):
def __init__(self, inputs):
self.inputs = []
for i in inputs:
self.inputs.append(i)

关于python - 为什么所有类(class)都会受到一个类(class)变化的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55636387/

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