2016-11-22 13 views
1

私はNumpy行列といくつかの追加の情報を扱うクラスを持っています。Python:dict-likeの方法で属性に直接アクセスします。

import numpy as np 

class MyClass: 
    def __init__(self, v): 
     self.values = v 

plop = MyClass(np.matrix([[1, 2], [3, 4]])) 

それにアクセスするには、を命名されたマトリックス、私が書く:

plop.values[1, 1] # Returns 4 

は、それが直接アクセスすることは可能ですか?私がやって、意味:

plop[1, 1] # Should returns 4 too 

私はthis postを見ましたが、それはこのソリューションは[] 1レベルだけを許可することを縫い目。

ありがとうございます!

+0

'プロップ= np.matrix([1、2] 、[3、4]]); plop [1,1] '? – dm03514

+2

実際、私がここに書いていない他の属性がMyClassにあります。 – Picani

答えて

4

ちょうどあなたのクラスに

def __getitem__(self, indices): 
    return self.values[indices] 

をこのメソッドを追加します。また、機会が与えられ、__getitem__スライスはあなたが私が思う直接アクセス作業

+0

これは完璧です、ありがとう! – Picani

-1

オブジェクト方法を確認するために有用であろう。

プロップ= np.matrix([1、2]、[3、4])

プロット[1,1]

+0

OPを引用するには: "私がここに書いていないMyClassには他の属性がある"ので、 'plop'は' MyClass'のインスタンスでなければなりません –

関連する問題