Python:将一个带有列表的对象附加到另一个带有列表的对象上;超过最大递归深度

2024-09-30 04:33:07 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我的程序,我有一个有值的对象和一个相同类型的对象列表

class WordAndList:
Word = ""
List = []

def __init__(self, word):
    Word = word

在我创建了一些之后,我想把一个附加到另一个上

newWL = WordAndList("Hello")
secondWL = WordAndList("my")
newWL.List.append(secondWL)

但是,每当我尝试从newWL递归地访问元素(比如打印所有单词)时,我都会得到最大递归深度超出错误

为什么将一个对象附加到一个列表(其中该对象也有一个列表)会导致列表无限重复?发生附加时实际发生了什么


Tags: 对象self程序类型列表initdeflist
1条回答
网友
1楼 · 发布于 2024-09-30 04:33:07

当我运行代码时,我没有得到它所完成的错误。这种差异可能是由于操作系统或类似的操作系统(我在UbuntuPython 2.7.6)造成的,但是,我不认为代码做了您想要的事情

按照它的编写方式,构造函数实际上并没有初始化任何对象级变量,只是一个局部变量。因此,对象的WordList成员分别是空字符串和空列表

你会想要这样的东西:

class WordAndList:
    def __init__(self, word):
        self.Word = word
        self.List = []


newWL = WordAndList("Hello")
secondWL = WordAndList("my")
newWL.List.append(secondWL)

append而言,每次调用都会在列表的末尾添加另一个元素。因此,当您使用WordAndList的实例作为参数调用上述代码中的append时,它实际上是将reference附加到该对象的列表中

例如,如果在printnewWL.List中添加到pdb之后,它会显示以下内容:

[<__main__.WordAndList instance at 0x7f4162a50e18>]

相关问题 更多 >

    热门问题