如何用Python列表推导式获取对象属性并规避NameError?
问题解决方法
你的错误出在列表推导式的语法上——列表推导式的格式是「[表达式 for 变量 in 可迭代对象]」,你应该先遍历textContainer里的每个对象,用变量指代对象,再取它的text属性,而不是直接遍历属性。
正确的列表推导式写法
先通过列表推导式生成所有text属性的列表,再打印:
class TextBox(object): def __init__(self, text=""): self.text = text # 假设这里已经添加了多个TextBox对象 textContainer = [TextBox("文本1"), TextBox("文本2"), TextBox("文本3")] # 正确的列表推导式 text_list = [i.text for i in textContainer] print(text_list) # 输出: ['文本1', '文本2', '文本3']
如果想和普通for循环一样逐个打印每个text,可以用生成器表达式配合print的解包功能:
print(*(i.text for i in textContainer), sep='\n') # 输出: # 文本1 # 文本2 # 文本3
另一种方法:使用map函数
也可以用map函数批量提取属性,再转成列表打印:
print(list(map(lambda x: x.text, textContainer))) # 输出: ['文本1', '文本2', '文本3']
内容的提问来源于stack exchange,提问作者user15318873
相关产品推荐
相关产品推荐

