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

Python中返回对象列表打印出地址而非值的问题排查

问题解析:打印过滤器列表显示对象地址而非内容

你遇到的问题其实很常见——当你打印filters对象的列表时,Python默认输出的是每个对象的内存地址和类标识,而不是你期望的数组内容,核心原因在于你的filters类没有定义自定义的字符串表示方法。

问题根源

Python中,当你直接打印一个自定义类的实例时,如果没有专门定义__repr__()或__str__()方法,解释器会默认输出这个对象的类名和它在内存中的地址(就是你看到的<__main__.filters at 0xb195a90>这种格式)。你的filters类里虽然有存储数组的self.fil属性,但Python不知道要怎么把这个对象转换成可读的字符串,所以只能用默认的方式展示。

解决方案

给你的filters类添加一个__repr__()方法(或者__str__(),前者更偏向“官方”的可重现表示,后者偏向友好的用户展示),让Python知道打印这个对象时应该输出self.fil的内容。

修改后的filters类代码如下:

import numpy as np

class filters(object):
    def __init__(self, dimensions):
        self.dimensions = dimensions
        self.fil = np.random.random_sample(self.dimensions)
    
    def __repr__(self):
        # 既显示维度又显示数组内容,输出更清晰
        return f"filters(dimensions={self.dimensions}, fil={self.fil!r})"
        # 如果只需要显示数组内容,直接用下面这行即可
        # return repr(self.fil)

这样当你再调用l.getLayerFilters()并打印时,就会看到每个filters对象对应的3D数组内容,而不是内存地址了。

你的原始代码片段

初始化与返回函数

class layer(object):
    def __init__(self, inputDimensions, channels, padding, stride, layerInput):
        self.inputDimensions = inputDimensions
        self.channels = channels
        self.padding = padding
        self.stride = stride
        self.layerInput = layerInput

    def getLayerInfo(self):
        return self.inputDimensions, self.channels, self.padding, self.stride

    def getLayerInput(self):
        return self.layerInput

    def getLayerFilterInfo(self):
        return self.filterDimensions, self.numberOfFilters

    def getLayerFilters(self):
        return self.filters

    def initializeFilter(self, filterDimensions, numberOfFilters):
        self.filterDimensions = filterDimensions
        self.numberOfFilters = numberOfFilters
        self.filters = []
        for i in range(0, self.numberOfFilters):
            fil = filters(self.filterDimensions)
            self.filters.append(fil)

原始filter类

class filters(object):
    def __init__(self, dimensions):
        self.dimensions = dimensions
        self.fil = np.random.random_sample(self.dimensions)

输入输出示例

In [11]: l.getLayerFilters()
Out[11]: [<__main__.filters at 0xb195a90>, <__main__.filters at 0xb1cb588>, <__main__.filters at 0xb1cb320>, <__main__.filters at 0xb1cb5c0>, <__main__.filters at 0xb1cbba8>]

In [12]: type(l.getLayerFilters())
Out[12]: list

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:19:08