gpt4 book ai didi

Python类继承——Base被子类修改

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:23 25 4
gpt4 key购买 nike

假设我有一个名为 Test 的类,其中包含一个属性项。然后我创建了一个名为 Best 的子类。其中有一个修改类属性项的方法。但它甚至会修改 Testitems,而我只为 Best 修改 items

class Test():
items = []

class Best(Test):
def method(self):
type(self).items.append("a test")

>>> Best().method()
>>> Best.items
["a test"]
>>> Test.items
["a test"] # This is what I don't want.

最佳答案

您已将 items 声明为父类(super class)本身的属性,因此 Test 的所有实例及其子类将共享同一个列表。而是在 Test 的 __ init __ 方法中声明它,因此每个实例都有一个列表。

在 Best 中,只需附加到 self.items,并且只会更新 Best 实例的列表。

class Test(object):
def __ init __(self)
self.items = []

class Best(Test): # Best must inherit from Test
def method(self):
self.items.append("a test")

关于Python类继承——Base被子类修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110966/

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