Python 如何从';自我';通过迭代查字典?
我不知道如何有效地表达我的问题,但我会尽力的。我希望能够使用“for”语句在字典中进行迭代,并访问以前制作的“self”项。就像我说的,这个问题很难回答 我发现我可以使用exec()来做这件事,但我被告知除非绝对必要,否则不要使用exec()。另外,我意识到这个例子在技术上是无用的,但它是我所需要的一个非常简化的版本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中:
全局计数器
计数器=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抱歉,我不知道我必须这么做。我的错!