Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从';自我';通过迭代查字典?_Python_For Loop_While Loop_Self - Fatal编程技术网

Python 如何从';自我';通过迭代查字典?

Python 如何从';自我';通过迭代查字典?,python,for-loop,while-loop,self,Python,For Loop,While Loop,Self,我不知道如何有效地表达我的问题,但我会尽力的。我希望能够使用“for”语句在字典中进行迭代,并访问以前制作的“self”项。就像我说的,这个问题很难回答 我发现我可以使用exec()来做这件事,但我被告知除非绝对必要,否则不要使用exec()。另外,我意识到这个例子在技术上是无用的,但它是我所需要的一个非常简化的版本 全局计数器 计数器=0 类GUI: 定义初始化(自): self.stuff=[“foo”、“bar”、“fooest”、“barest”] 对于我来说,在self.stuff中:

我不知道如何有效地表达我的问题,但我会尽力的。我希望能够使用“for”语句在字典中进行迭代,并访问以前制作的“self”项。就像我说的,这个问题很难回答

我发现我可以使用exec()来做这件事,但我被告知除非绝对必要,否则不要使用exec()。另外,我意识到这个例子在技术上是无用的,但它是我所需要的一个非常简化的版本

全局计数器
计数器=0
类GUI:
定义初始化(自):
self.stuff=[“foo”、“bar”、“fooest”、“barest”]
对于我来说,在self.stuff中:
自我过程(一)
self.printAll()
def过程(自我,i):
全局计数器
计数器+=1
self.\u dict.update({“ex{}”.format(counter):i})
def printAll(自身):
全局计数器
当计数器>0时:
exec(“打印(self.ex{})”.format(计数器))
计数器-=1
GUI()
这确实有效;printAll(self)不打印self.ex1到ex4。有没有一种不用exec()的方法?。请帮忙

global counter
counter = 0
class GUI:
    def __init__(self):
        self.stuff = ["foo","bar","fooest","barest"]
        for i in self.stuff:
            self.process(i)
        self.printAll()

    def process(self,i):
        global counter
        counter += 1
        self.__dict__.update({"ex{}".format(counter):i})

    def printAll(self):
        global counter
        while counter > 0:
            print(eval("self.ex{}".format(counter)))
            counter -= 1
GUI()

我希望这适用于您的情况

只需使用容器,不要动态添加属性,或者如果您必须这样做,请使用
getattr
setattr
。谢谢,它可以工作!Mark as approve@cryden抱歉,我不知道我必须这么做。我的错!