2016-09-29 4 views
0

に応じて右のPythonオブジェクトを取得します。私のメインのコードで私は、モジュールshape.pyで2つの継承したクラスを持っている設定またはユーザー入力

class Shape(object): 

class Triangle(Shape): 

class Square(Shape): 

私はShapeをインスタンス化したいが、私は知りませんどのような形になるのでしょうか。形状は、ユーザ入力または設定に依存する。

設定やPythonのユーザー入力に従って適切なインスタンスを取得するにはどうすればよいでしょうか?

class_dict = {'triangle': Triangle, 'square': Square} 

user_input = input() 

shape_object = class_dict[user_input]() 

ユーザ入力がtriangleshape_objectTriangleインスタンスになります場合、および:

答えて

0

あなたがキーとして期待される入力値としてクラスを持つ辞書を作成することができます(そこにはは()ではないことに注意してください)ユーザーがsquareを入力した場合、shape_objectSquareインスタンスになります。

これは基本的な例であり、ユーザが'triangle''square'のどちらも入力しない場合、KeyErrorが発生することに注意してください。

+0

ありがとうございました。私はここにデザインが見つかりましたhttps://github.com/evandempsey/python-design-patterns/blob/master/patterns/factory.py。彼らは 'ShapeFactory'を使います。私は今実際に最良の選択肢は何もありません。 – Jpaille

+0

これはほとんど同じですが、私の例では辞書を 'if'ステートメントで置き換えるだけです。私は個人的に辞書を好む。より短く清潔。 – DeepSpace

関連する問題