-5
私はdir()でクラス名を抽出し、forループの変数名でそのインスタンスを作成しています。どうすればPythonが '存在しない'クラス名ではなく 'item'を変数名として解釈させることができますか?forループ内にインスタンスを作成する
>>> class cls1():
... def __init__(self):
... self.speak = 'say cls1'
... def replay(self):
... print self.speak
...
>>> for item in dir():
... if item[:2] != '__':
... print 'item = ', item
... x = item()
... x.reply()
...
item = cls1
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
TypeError: 'str' object is not callable
もう1つ質問してみたいです。文字列をクラス名に評価するPythonの方法はありません。たぶんeval経由ですか??つまり、この文字列をクラス名と照合して、自動的に参照に変換できると思います。ありがとう – Kris
@Kris: 'eval'は最後の手段としてのみ使用するべきです。 'globals()'ディクショナリは文字列値からオブジェクトへの直接マッピングを提供します。あなたが持っているものが 'name'変数に文字列名であれば、' globals()[name] 'はあなたにオブジェクトを与えます。 –
ありがとうございます。上で働いたあなたの例は、すべてが良いです。これを行う方法の選択肢(とそれほど最適ではない)について疑問に思っていただけです。再度、感謝します。 – Kris