如何在ipython cons中定义类输出

2024-06-02 09:39:16 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下代码:

class PrintStuff:
    def __init__(self,stuff):
        self._stuff = stuff

    def __str__(self):
        return self._stuff

如果我在ipython中创建一个实例并键入实例的名称,它会打印出类的名称和它在内存中的位置。但是,如果我将实例放入print函数,它会按预期输出:

pstuff = PrintStuff('print this stuff')

pstuff
Out[44]: <__main__.PrintStuff at 0x7fae0531de80>

print(pstuff)
print this stuff

我该如何使ipython控制台打印出与print函数相同的内容呢?例如,熊猫系列有我想要的行为类型:

series = pd.Series({'x':[1,2],'y':[2,3],'z':[3,4]})

series
Out[47]: 
x    [1, 2]
y    [2, 3]
z    [3, 4]
dtype: object

print(series)
x    [1, 2]
y    [2, 3]
z    [3, 4]
dtype: object

Tags: 实例函数self名称objectdefipythonout
1条回答
网友
1楼 · 发布于 2024-06-02 09:39:16

您需要添加__repr__

默认情况下,对象__repr__返回类型和内存地址,这是控制台输出时看到的(例如):

<__main__.PrintStuff at 0x7fae0531de80>

重载__repr__之后,您可以控制输出是什么

class PrintStuff:
    def __init__(self,stuff):
        self._stuff = stuff

    def __str__(self):
        return self._stuff

    def __repr__(self):
        return str(self)


pstuff = PrintStuff('print this stuff')
pstuff

输出:

print this stuff

相关问题 更多 >