1

私はこれに長い間 (文字通り数週間のように) 行き詰まっていました。コード内の他のすべてを完了しましたが、これだけです。私もたくさん調べましたが、解決策に近づくことはできません。私がここに来るのを1週間待ったのは、これを自分で解決したかったからですが、今はあきらめます!

ここで、次のコードがあるとします。

class test:
  def meth1(self, obj):
    self.hello = {}
    return self.hello.obj()
  def meth2(self):
      test.meth1(self, 'keys')

ここで、インスタンスを作成し、次のmeth2ようにメソッドを呼び出そうとすると:

x = test()
x.meth2()

明らかな理由でエラーが発生します。引数を関数に渡し、その引数を別のオブジェクトのオブジェクトとして使用するなど、私が望むことを実行するにはどうすればよいですか?

4

1 に答える 1

2

あなたが望むように見えますgetattr():

def meth1(self, obj):
    self.hello = {}
    return getattr(self.hello, obj)()

getattr(a, b)a.bは( 2 番目のケースでは、最初のケースの が保持bする文字列です) と同等です。bこの場合、aisself.hellobisobjです。あなたのスニペットから、属性を直接返すのではなく、属性を呼び出したいように見えます。そのため、末尾に a があります。obj()


>>> class test:
...     def meth1(self, obj):
...         self.hello = {}
...         return getattr(self.hello, obj)()
...     def meth2(self):
...         return test.meth1(self, 'keys')
... 
>>> x = test()
>>> x.meth2()
[]
于 2013-10-27T19:03:56.467 に答える