如何让类的compose方法获取同一实例中其他方法的调用情况
解决方案
核心就是给Template类加一个实例属性,专门记录每次调用插入方法的内容和类型,这样compose方法就能直接读取这些记录生成文件。
修改后的代码如下:
class Template: def __init__(self): # 用列表存储所有插入的元素,每个元素是(类型, 数据)的元组 self._elements = [] def insert_text(self, text): # 把文本内容记录到_elements里 self._elements.append(("text", text)) # 返回self支持链式调用,比如customfile.insert_text("xxx").insert_photo("yyy") return self def insert_photo(self, path_to_photo): # 把图片路径记录到_elements里 self._elements.append(("photo", path_to_photo)) return self def compose(self, output_path="output.txt"): # 根据记录的元素生成内容 content = [] for elem_type, data in self._elements: if elem_type == "text": content.append(data) elif elem_type == "photo": # 这里可以按你需要的格式生成图片对应的文本,比如markdown格式或者自定义格式 content.append(f"[图片路径]: {data}") # 把内容拼接成字符串,写入文件 final_content = "\n".join(content) with open(output_path, "w", encoding="utf-8") as f: f.write(final_content) print(f"文件已生成:{output_path}") return final_content # 使用示例 customfile = Template() customfile.insert_text("look at this code work!!!").insert_photo("C:/Users/...") customfile.compose()
关键说明
__init__里的self._elements用来存所有操作记录,每个元素是(类型标识, 具体数据)的元组,方便compose区分处理- 插入方法返回
self是为了支持链式调用,嫌麻烦也可以去掉这行 compose里的格式可以自己改,比如图片想生成<img src="xxx">这种HTML格式,直接修改对应的拼接代码就行- 最后用
with open把内容写入文件,你可以指定输出路径,默认是当前目录的output.txt
内容的提问来源于stack exchange,提问作者cyberghost
相关产品推荐
相关产品推荐

