2016-09-29 5 views
0

에 따라 올바른 파이썬 객체를 가져옵니다 어떤 모양이 될지. 모양은 사용자 입력 또는 설정에 따라 다릅니다.나는 모듈 shape.py에 두 개의 상속 클래스를 설정 또는 사용자 입력

파이썬의 설정이나 사용자 입력에 따라 올바른 인스턴스를 얻는 가장 좋은 방법은 무엇입니까?

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

user_input = input() 

shape_object = class_dict[user_input]() 

사용자 입력이 triangle, shape_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