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

Python中<__main__.Datos object at ...>输出含义及原因问询

为什么打印自定义类实例会输出<__main__.Datos object at 0x00000259566AFE50>?

这个输出是Python对自定义类实例的默认字符串表示:因为你没有给Datos类定义__str__或__repr__方法,Python就会用内置的默认实现——输出类的完整路径(__main__.Datos表示当前脚本里的Datos类)加上实例在内存中的地址(0x00000259566AFE50)。

解决方法:给Datos类添加__str__方法

要让打印实例时显示有意义的内容,只需在Datos类中定义__str__方法,它会告诉Python如何把实例转换成可读性强的字符串:

class Datos:
    def __init__(self):
        self.indice = 0  # int()等价于0,直接写初始值更清晰
        self.nombre = "" # str()等价于""

    def __str__(self):
        # 返回自定义的显示格式
        return f"山地索引: {self.indice}, 名称: {self.nombre}"

你的代码还有几个需要修正的问题

  1. 逻辑冗余:
    循环条件已经是cad != "",里面的if cad == ''永远不会触发,可直接删除该判断。
  2. 数据覆盖问题:
    每次循环都会覆盖datos的indice和nombre,最后只会保留文件最后一行的数据。如果要存储所有山地数据,应该用列表保存多个Datos实例。
  3. 异常捕获范围过宽:
    直接except:会捕获所有异常,建议明确捕获FileNotFoundError这类文件相关异常,避免掩盖其他错误。

修改后的完整代码示例

class Datos:
    def __init__(self, indice=0, nombre=""):
        self.indice = indice
        self.nombre = nombre

    def __str__(self):
        return f"山地索引: {self.indice}, 名称: {self.nombre}"


def GuardarMontaña(fich, datos_list):
    cad = fich.readline()
    ok = False
    while cad != "":
        cad_stripped = cad.strip()
        # 跳过空行
        if not cad_stripped:
            cad = fich.readline()
            continue
        ok = True
        linea1 = cad_stripped.split()
        # 创建新实例并添加到列表
        datos = Datos(int(linea1[0]), linea1[1])
        datos_list.append(datos)
        cad = fich.readline()
    return ok


def main():
    try:
        f = open("Pr8_C_montanas.txt", encoding='UTF-8')
    except FileNotFoundError:
        print("找不到指定的文件。")
    except Exception as e:
        print(f"打开文件时出错: {e}")
    else:
        montanas = []
        if GuardarMontaña(f, montanas):
            for montana in montanas:
                print(montana)
        else:
            print("无法读取有效数据。")
        finally:
            f.close() # 确保文件被关闭


if __name__ == '__main__':
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:55:13