You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:45:33