0

私は次のことをしようとしています:

import sys; sys.path.append('/var/www/python/includes')
import functionname

x = 'testarg'
fn = "functionname"
func = getattr(fn, fn)
func (x)

しかし、エラーが発生しています:

"TypeError: getattr(): attribute name must be string"

getattrを呼び出す前にこれを試しましたが、それでも機能しません。

str(fn)

なぜこれが起こっているのか分かりません、アドバイスをいただければ幸いです

4

2 に答える 2

4

locals()代わりにあなたが欲しがっているかもしれないように聞こえますgetattr()...

x = 'testarg'
fn = "functionname"
func = locals()[fn]
func (x)

オブジェクトがあり、ローカル名前空間からの変数ではなく、そのオブジェクトの属性を取得する場合は、getattrを使用する必要があります。

于 2010-08-18T21:23:20.270 に答える
0

getattrの最初の引数は、関心のある属性を持つオブジェクトです。この場合、関数の属性を取得しようとしていると思います。したがって、最初の引数は関数である必要があります。関数名を含む文字列ではなく、関数自体。

そのために文字列を使用する場合は、locals()[fn]のようなものを使用して、その名前の実際の関数オブジェクトを見つける必要があります。

次に、関数名をgetattrに2回渡します。関数はそれ自体を属性として持っていません。2番目の引数がxであることを意味しましたか?私はあなたがここでやろうとしていることを本当に理解していないと思います。

于 2010-08-18T21:24:35.260 に答える