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

如何让类的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:07:28