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

Python全局字符串传递与拼接问题求助

问题解决思路

核心问题定位

你看到的object.Class object at address输出,说明mdstring、rxstring等变量并不是字符串类型,而是某个自定义类的实例对象。你提到赋值函数返回字符串,但实际可能函数返回的是包含字符串属性的对象,而非直接返回字符串。

分步排查与解决

  1. 验证变量实际类型
    在调用ordered_addr_string前,先打印每个变量的类型和内容,确认真实情况:

    print("mdstring类型:", type(mdstring), "值:", mdstring)
    print("rxstring类型:", type(rxstring), "值:", rxstring)
    # 同理打印dnstring、vsstring
    

    如果输出类型不是<class 'str'>,就说明变量是对象,不是字符串。

  2. 检查赋值函数的返回值
    找到给这些变量赋值的函数,查看它的返回逻辑。比如函数可能是这样的:

    def get_vsstring():
        # 错误示例:返回自定义对象而非字符串
        class VisionString:
            def __init__(self, value):
                self.value = value
        return VisionString("1|Vision|~Included with Medical.")
    

    这种情况下,vsstring是VisionString的实例,不是字符串,打印时就会显示对象地址。

  3. 正确获取字符串值
    如果变量是对象,需要提取它的字符串属性。假设对象用value属性存储字符串,修改调用代码:

    ordered_back_addreses = {
        "5117": ordered_addr_string(mdstring.value, rxstring.value, dnstring.value, vsstring.value),
    }
    

    或者如果对象实现了__str__方法但str()没生效,尝试直接调用str():

    ordered_back_addreses = {
        "5117": ordered_addr_string(str(mdstring), str(rxstring), str(dnstring), str(vsstring)),
    }
    
  4. 修正ordered_addr_string函数
    函数里的global声明完全多余(参数已经传入变量值),同时补全拼接逻辑:

    def ordered_addr_string(*addresses):
        ordered_addresses = []
        for address in addresses:
            # 确保处理的是字符串,同时过滤空值
            addr_str = str(address).strip()
            if addr_str:
                ordered_addresses.append(addr_str)
        return "^".join(ordered_addresses)
    

    用列表收集非空字符串再join,比循环拼接更高效简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:53:19