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

Python如何从包含字符串和列表的类对象中提取列表文本内容

问题原因

你的代码存在3个核心错误,导致无法正确读取列表内的文本内容:

  • 实例存储逻辑错误:往listOfTranslationContent添加元素时,错误地将已经创建好的ContentTranslation实例作为参数传入了ContentTranslation构造函数,导致存入列表的对象的language属性是一个类实例,contentTranslationList始终是初始化时的空列表,打印时自然只会得到空列表/对象引用。
  • 类方法缩进错误:Python要求类下的所有方法必须缩进在类定义块内部,原代码无缩进会直接导致类定义失效。
  • 依赖变量未初始化:代码中用到的noOfSessions、aContentList、listOfTranslationContent、language变量均未提前定义,直接运行会抛出名称错误。
修正方案

调整实例传参逻辑、补全缩进、初始化缺失变量即可,修正后可运行代码如下:

class ContentTranslation(object):
    # 补全类方法缩进
    def __init__(self, language):
        self.language = language
        self.contentTranslationList = []

    def addContentTranslation(self, contentTranslation):
        # 如果需要支持多次追加单条内容,可改为self.contentTranslationList.append(contentTranslation)
        # 如果是直接替换整个列表内容,保留赋值逻辑即可
        self.contentTranslationList = contentTranslation

    def getLanguage(self):
        return self.language

    def getContentTranslation(self):
        return self.contentTranslationList


# 初始化缺失的全局变量
noOfSessions = 5
language = "zh-CN"
aContentList = []
listOfTranslationContent = []

for j in range(1, noOfSessions):
    aContentList.append("a")
contentTranslation = ContentTranslation(language)
contentTranslation.addContentTranslation(aContentList)
# 修正:直接把创建完成的contentTranslation实例存入列表,不要重复嵌套构造函数
listOfTranslationContent.append(contentTranslation)

for i in range(len(listOfTranslationContent)):
    print(str(listOfTranslationContent[i].getLanguage()))
    # 直接打印整个列表会输出['a','a','a','a']格式的实际内容
    print(str(listOfTranslationContent[i].getContentTranslation()))
    # 如果需要逐行打印列表内的文本,可加一层遍历
    # for content in listOfTranslationContent[i].getContentTranslation():
    #     print(content)

运行后会正常输出配置的语言值,以及列表内存储的所有实际文本,不会再出现对象引用或空值问题。

内容的提问来源于stack exchange,提问作者Eddie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:48:39