あなたはおそらく非常に、非常に悪い習慣が、試みることができる:
def get_class_instance(nm) :
try :
return eval(nm+'()')
except :
return None
また、より安全に、あなたはevalを与える可能性があり、地元の人々は、ハッシュことを確認するために:eval(nm+'()', {'Pigeon':pigeon})
その場合、私はわからないんだけど仕事、それは間違いなく問題があります:nm
の値と呼ばれる機能があれば、それはそれを返します:
def Pigeon() :
return "Pigeon"
print(get_class_instance('Pigeon')) # >> 'Pigeon'
EDIT:
(申し訳ありませんが、私は、それがobj.hasattrていないそのはhasattr(OBJ)を忘れてください!)
import models as m
def get_class_instance(nm) :
if hasattr(m, nm) :
return getattr(m, nm)()
else : return None
:それを行う別の方法は、モジュールを知っていれば、おそらく(未テスト)であります
EDIT 2:はい、うまくいきます!うわー!
「ピジョン」が外部から来る可能性があるので、ええ、私は指定しておくべきです、私は全く評価を使用したくありません。 –
Affitmative。 (愚かなコメントの長さ - 私はちょうど "OK"と言っていたでしょう):D –
evalは完全にここでは必要ありません。 –