나는 친구가 쓴 최근에이 기능을 좋게 발견 한 몇 가지 코드를 리팩토링있어를 리팩토링 방법 :파이썬 "스위치 문"
def setup_parameters(self, data):
'''Parse raw data to determine game settings.'''
for line in data.split('\n'):
line = line.strip().lower()
if line:
tokens = line.split()
self.L.debug("tokens: " + str(tokens))
key = tokens[0]
if key == 'cols':
self.width = int(tokens[1])
elif key == 'rows':
self.height = int(tokens[1])
elif key == 'player_seed':
random.seed(int(tokens[1]))
elif key == 'turntime':
self.turntime = int(tokens[1])
elif key == 'loadtime':
self.loadtime = int(tokens[1])
elif key == 'viewradius2':
self.viewradius2 = int(tokens[1])
elif key == 'attackradius2':
self.attackradius2 = int(tokens[1])
elif key == 'spawnradius2':
self.spawnradius2 = int(tokens[1])
당신이 볼 수 있듯이, 여기 switch 문의 불쾌한 종류가있다, 분명히 사전을 요구합니다. 키가 상수이기 때문에 이것을 클래스 사전으로 쓰고 싶지만, 키는 인스턴스의 속성 (즉, 'cols': self.width)에 매핑되기 때문에 컴파일되지 않습니다.
제 질문은 다음과 같은 코드를 리팩토링하는 올바른 방법은 무엇입니까?
중복 질문 : http://stackoverflow.com/questions/60208/replacements-for-switch-statement-in -python – JBernardo
"분명히"? 무엇을 기반으로할까요? –
코드 리팩토링에 노력하고 있음을 확인하기 위해 표준 Python ConfigParser 모듈을 사용하고보기 바란다. – fabrizioM