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
相关产品推荐
相关产品推荐

