簡體   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