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

如何返回Python类__init__方法中存储的数据集

问题原因

代码存在两个核心错误,导致输出不符合预期:

  • 实例属性绑定错误:__init__方法内直接写__dataset__ = data定义的是方法内部的局部变量,生命周期仅在__init__方法执行期间存在,不会绑定到类实例上。Python类中如果要定义所有实例方法可访问的属性,必须通过self.属性名 = 值的形式绑定。
  • 方法调用语法错误:print(test.__print__)没有在方法名后加括号,Python不会执行方法内部逻辑,只会直接打印方法对象本身的描述信息,也就是你看到的<bound method automate_lm.__print__ of <__main__.automate_lm object at 0x7fae1014b670>>输出。也正因为方法没有实际执行,你代码里self.__dataset__未定义的问题才没有触发AttributeError报错。

额外说明: __print__不是Python内置的特殊方法名,如果你希望直接打印类实例就能输出数据集头部内容,应该重写内置的__str__或__repr__方法。

修正后代码

提供两种常用实现方式:

方式1:保留自定义方法调用

import faraway.datasets.pima

pima = faraway.datasets.pima.load()

class automate_lm:

    def __init__(self, data):
        # 绑定为实例属性
        self.__dataset__ = data
    
    def get_head(self):
        return self.__dataset__.head()

if __name__ == '__main__':
    test = automate_lm(pima)
    # 调用方法必须加括号
    print(test.get_head())

方式2:重写内置字符串方法,支持直接打印实例

import faraway.datasets.pima

pima = faraway.datasets.pima.load()

class automate_lm:

    def __init__(self, data):
        self.__dataset__ = data
    
    def __str__(self):
        # __str__必须返回字符串类型
        return str(self.__dataset__.head())

if __name__ == '__main__':
    test = automate_lm(pima)
    print(test)
运行结果

两种写法执行后都能得到预期的数据集前5行输出:

pregnant  glucose  diastolic  triceps  insulin   bmi  diabetes  age  test
0         6      148         72       35        0  33.6     0.627   50     1
1         1       85         66       29        0  26.6     0.351   31     0
2         8      183         64        0        0  23.3     0.672   32     1
3         1       89         66       23       94  28.1     0.167   21     0
4         0      137         40       35      168  43.1     2.288   33     1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:06:27