0

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

例子:

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

如果我能得到这样的东西就好了。

4

3 回答 3

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>
于 2013-01-23T14:34:45.680 回答
1

您需要__repr__在类上定义一个方法。

于 2013-01-23T14:34:46.927 回答
1

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

__str__
__repr__

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

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

于 2013-01-23T14:41:44.057 回答