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

为何修改pandas DataFrame的__repr__方法无法改变其显示效果?

动态修改__repr__方法的差异现象

最近发现一个有意思的情况:修改自定义类的__repr__方法,不管是在类定义里直接写,还是后续动态赋值,都能正常改变实例的输出;但对Pandas的DataFrame类做同样的动态赋值操作,在Jupyter笔记本里却完全没效果,具体测试如下:

测试1:自定义类A(直接定义__repr__)

class A:
    def __init__(self):
        pass
    def __repr__(self):
        return "abc"
a = A()
a  # 输出结果:abc

测试2:自定义类B(动态赋值__repr__)

class B:
    def __init__(self):
        pass
B.__repr__ = lambda x: "hi"
b = B()
b  # 输出结果:hi

测试3:Pandas DataFrame(Jupyter中动态赋值无效)

import pandas as pd

pd.DataFrame.__repr__ = lambda x: "hi"
df = pd.DataFrame({'a': [1,2], 'b': [3,4]})
df  # 输出仍是默认表格:
#    a  b
# 0  1  3
# 1  2  4

补充说明

注意:该动态赋值操作在Python原生REPL中是有效的,上述无效的情况仅出现在Jupyter笔记本环境中。至于为什么在Jupyter里无效,属于另一个需要单独探讨的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:37:47