繁体   English   中英

如何在python中使用对象名作为变量

[英]How to use object name as variable in python

我怎样才能定义一个类,使对象名可以用作变量? 我正在编写一个数值分析类,它只包含一个numpy数组作为即时变量和许多数学运算。 为了方便和可读性,仅仅通过它的对象名访问numpy数组会很不错。 例如,可以直接调用numpy数组(或来自matplotlib,pandas等许多其他包的对象),

import numpy as np

foo = np.array([[1,2],[3,4]])
print foo

这就像我所拥有的(省略了定义方法)

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

这将foo打印为foo.data的指针和内容

<__main__.MyClass instance at 0x988ff0c>
[[1 2]
 [3 4]]

我在构造函数中尝试了self = np.array(input_array) ,但它仍然给出了一个地址。 我在想像重载对象名称,但我找不到任何信息。

如果不可能,那么这些包怎么能实现呢? 我试着读一些numpy和pandas的源代码。 但作为python的新手,我几乎不可能在那里找到答案。

编辑

感谢__str____repr__ 。建议使用__str____repr__ 但我意识到我真正需要的是继承numpy.ndarray甚至是pandas DataFrame,以便继承所有数学函数。 我发现这两个链接对于ndarrayDataFrame非常有用, 可以为我的界面调整__init__调用。

如果希望能够以可打印的方式表示类对象,则可以定义__str__方法

class MyClass():
    def __init__(self, input_array):
        self.data = np.array(input_array)
    def __str__(self):
        return str(self.data)

>>> foo = MyClass([[1,2],[3,4]])
>>> print(foo)
[[1 2]
 [3 4]]

此外,您可以在此处查看有关何时适用于您的类的__repr__ vs __str__详细讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM