Python对象名称和交互式解释器

时间:2013-01-23 14:30:51

标签: python interpreter interactive

当我定义一个类并创建它的实例时,在shell中输入实例名称会返回一个内存位置。这并不奇怪,但有没有人知道如何定义一个类,以便将其名称输入shell实际上将返回除内存位置之外的其他内容?

示例:

>> import numpy as np
>> foo = np.array([1,2,3])
>> foo
>> array([1, 2, 3])

如果我能得到这样的东西会很好。

3 个答案:

答案 0 :(得分:5)

这是__repr__方法的用途:

>>> class point(object):
...     def __init__(self, x, y):
...         self.x = x
...         self.y = y
...         
...     def __repr__(self):
...         return "point(%d, %d)" % (self.x, self.y)
>>> x = point(3, 4)
>>> x
point(3, 4)

如果没有自定义__repr__实施,您会在问题中看到您所描述的内容:

>>> class defaultPoint(object):
...     def __init__(self, x, y):
...         self.x = x
...         self.y = y  
... 
>>> p = defaultPoint(0, 3)
>>> p
<__main__.defaultPoint object at 0x16767b0>

答案 1 :(得分:1)

您需要在班级上定义__repr__方法。

答案 2 :(得分:1)

默认情况下,我们有python类的魔术方法,其中两个魔术方法将帮助我们做这件事,那些是

__str__
__repr__

我使用 repr 可以实现您的目标。 如果你使用 str ,它会在使用print语句时返回你在该方法中返回的内容

请注意,您应该从这些方法中返回要显示的内容