如何使类以下列方式返回对象:
import numpy as np
a = np.array([(1,2),(3,4)])
每当引用 a
时,它都会返回
array([[1, 2],
[3, 4]])
但是当我创建一个简单的类时:
class Example:
def __init__(self, data):
self.nparray = np.array(data)
然后运行 b = Example([(1,2),(3,4)])
然后引用 b
我得到: <__main__.Example at 0x7f17381099e8>
. 要返回值,我需要运行 b.nparray
.
如何使类 Example
返回
array([[1, 2],
[3, 4]])
什么时候引用 b
?
我尝试使用诸如 __new__
, __repr__
和 __getitem__
之类的方法,但是没有产生所需的行为 .
3 回答
您无法从类 init 函数返回任何数据 . 你尝试过类似的东西:
您应该以下列方式使用
__repr__
:这将返回
self.nparray
对象中的表示:当然,在交互式会话期间使用 and ,您只需输入名称并按Enter键,如果使用
print(c)
打印它 . 如果您需要限制仅针对print
调用,则为相关对象定义__str__
.使用Python的"magic methods",就像你已经看过的
__init__
一样,我们可以在某些事情发生时让类执行代码 . 其中一个是__call__
,它在类像函数一样被调用时执行 .知道这一点,你可以使用这个代码:
结果如下:
有关魔术方法的更多信息,请参阅this useful article .