我怎样才能定义一个类,使对象名可以用作变量?我正在编写一个数值分析类,它只包含一个numpy数组作为即时变量和许多数学运算.为了方便和可读性,仅仅通过它的对象名访问numpy数组会很不错.例如,可以直接调用numpy数组(或来自matplotlib,pandas等许多其他包的对象),
import numpy as np
foo = np.array([[1,2],[3,4]])
print foo
Run Code Online (Sandbox Code Playgroud)
这就像我所拥有的(省略了定义方法)
import numpy as np
class MyClass():
def __init__(self, input_array):
self.data = np.array(input_array)
foo = MyClass([[1,2],[3,4]])
print foo
print foo.data
Run Code Online (Sandbox Code Playgroud)
这将foo打印为foo.data的指针和内容
<__main__.MyClass instance at 0x988ff0c>
[[1 2]
[3 4]]
Run Code Online (Sandbox Code Playgroud)
我尝试self = np.array(input_array)了构造函数,但它仍然给出了一个地址.我在想像重载对象名称,但我找不到任何信息.
如果不可能,那么这些包怎么能实现呢?我试着读一些numpy和pandas的源代码.但作为python的新手,我几乎不可能在那里找到答案.
编辑
感谢CoryKramer和ŁukaszR.建议使用__str__和__repr__.但我意识到我真正需要的是继承numpy.ndarray甚至是pandas DataFrame,以便继承所有数学函数.我发现这两个环节非常有帮助,对ndarray和对数据帧,以tweek __init__我的接口调用.