12

したがって、辞書の値がオブジェクトであり、そのオブジェクトのキーがオブジェクト内のアイテムである次のコードがあります。

class MyObject():
    def getName(self):
       return self.name

    def getValue(self):
       return self.value

    def __init__(self,name, value):
       self.name = name
       self.value = value


dict = {}
object = MyObject('foo', 2) //foo is the name, 2 is the value
dict[object.getName()] = object

ただし、次のようにオブジェクトにアクセスできません。

>>>print dict['foo'].getValue()
<bound method object.getValue of <__main__.object instance at 0xFOOBAR000 >>

この方法でオブジェクトにアクセスする方法はありますか?

編集:

理由はわかりませんが、コードが最終的に機能するようになったため、同様の問題を抱えている人にとっては、上記のコードは有効であり、機能するはずです。現在の Python のバージョンは 2.7.3 です

4

1 に答える 1

15

関数を呼び出すときは常に括弧を含める必要があるため、次のように記述します。

dict['foo'].getValue()

また、getValueメソッドはselfパラメーターを受け入れ、それを介してインスタンス属性にアクセスする必要があります。

def getValue(self):
    return self.value

最後に、すべての属性に「getter」が付随するプログラミング スタイルは、Python では推奨されません。計算されたスロットを実装するのは簡単なので、ゲッターは必要ありません。

dictやなどの名前も、同じ名前の組み込み型objectと競合するため、強くお勧めしません。

EDIT
コードはその間に編集され、上記のコメントの一部が廃止されました。投稿されたコードの最新バージョンは、Python に貼り付けると問題なく動作するようです。

于 2012-11-13T20:58:24.140 に答える