将值存储到 init 但它会在读取新文件时不断覆盖列表

我有两个文件并加载到类中。文件一被加载,然后创建一个字符串,然后文件二将再次加载并创建一个字符串,最后两者都在一个列表中。但是,当我调用该函数时,它只会被新文件覆盖。例如,当读取文件 2 时,它只为文件 2 创建字符串并覆盖文件 1。


    class something():

    def getting(self, y):# string input "0" and "1"

        self.y = y #I have two files. y is a file. So if I have 2 files, then it will store 2 times into the self.y. Example, file one have "0" and "1" string

        self.fun1()


    def fun1(self):

        self.xx = []

        for i in range(2):

            self.xx.append("{} and {}".format(self.y, i)) #After getting the self.y, then it will append it into self.xx.

            # Example, 0 and 0 then 0 and 1; for y in "0" string.

            # Next, 1 and 0 then 1 and 1; for y in "1" string

            self.take()


    def take(self):

        return self.xx




a = ["0", "1"]

aaa = something()

for x in a:


    aaa.getting(x)


print(aaa.take())

电流输出:


['1 and 0', '1 and 1']

预期的 a.take:


['0 and 0', '0 and 1', '1 and 0', '1 and 1']


互换的青春
浏览 137回答 2
2回答

达令说

基于旧帖子:我认为您在以下代码中重载了变量“a”。当您完成 for 循环的第一次迭代时, a 已被循环内的代码更改。您必须改为使用另一个变量来跟踪您的列表 (something())。a = ["0", "1"]for x in a:    a = something()    a.getting(x)    print(a.take)试试这个:a = ["0", "1"]b = something()for x in a:      b.getting(x)    print(b.take)更新帖子的答案:您正在 fun1() 中重置 self.xx。您必须做的是在 something() 的 init 函数中将 self.xx 设置为 []。并且,不要在 fun1() 开始时将 self.xx 设置为 []
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python