为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

互换的青春 2021-07-30 18:39:19
我有两个文件并加载到类中。文件一被加载,然后创建一个字符串,然后文件二将再次加载并创建一个字符串,最后两者都在一个列表中。但是,当我调用该函数时,它只会被新文件覆盖。例如,当读取文件 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.xxa = ["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']
查看完整描述

2 回答

?
达令说

TA贡献1821条经验 获得超6个赞

基于旧帖子:


我认为您在以下代码中重载了变量“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 设置为 []


查看完整回答
反对 回复 2021-08-03
  • 2 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信