0

クラスを定義してそのインスタンスを作成するときに、シェルにインスタンス名を入力すると、メモリの場所が返されます。驚くことではありませんが、クラスの名前をシェルに入力すると実際にメモリの場所以外のものが返されるようにクラスを定義する方法を知っている人はいますか?

例:

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

デフォルトでは、python クラスのマジック メソッドが用意されています。これらのマジック メソッドのうちの 2 つが、このことを行うのに役立ちます。

__str__
__repr__

reprを使用すると、あなたが望むものを達成できます。strを使用すると、print ステートメントの使用中にそのメソッドで返されるものが返されます

これらのメソッドから表示したいものを返す必要があることに注意してください

于 2013-01-23T14:41:44.057 に答える
1

__repr__クラスにメソッドを定義する必要があります。

于 2013-01-23T14:34:46.927 に答える