0
インポートされた関数from package import fizz, buzz
がいくつかあり、文字列argから変数func
にマップする必要があります。インポートされた関数を変数にマップする
class Whatever(object):
def __init__(self, func_name='fizz'):
try:
self.func = vars()[func_name]
except KeyError:
print "Bad func_name"
raise
しかしvars()
は、ローカル名前空間を取得し、私はglobals()
へのアクセスを許可する必要はありません。何か案は?それとも、if-elseロジックだけでいいのですか?
これは、あなたが探しているものかもしれません。https://docs.python.org/3 /library/functions.html#exec –
なぜ、*直接*初期化子に渡さないのですか? 'def __init __(self、func = fizz)' –
しかし、基本的には、グローバル以外のグローバル名にアクセスする場合スコープを文字列で指定すると、 'globals'を使用するか、さらに悪いことに、' exec'や 'eval'のようなものを並べ替えることができます。 –