저는 쉘과 같은 환경을 만들고 있습니다. 사용자 입력을 처리하는 본래의 방법은 함수가 파이썬의 최상위 클래스 객체라는 사실을 이용하여 다양한 클래스의 메소드에 명령 (문자열)을 매핑하는 사전을 사용하는 것이 었습니다.python의 getattr을 광범위하게 사용하는 것은 나쁜 습관입니까?
유연성을 위해서 (주로 명령을 구문 분석하기 위해) getattr (명령)을 사용하여 필요한 설정을 가져온 다음 내 인수를 내 끝에 전달하는 것과 같이 설정을 변경하려고합니다. 파서. 이 방법의 또 다른 장점은 새 메소드/명령을 추가 할 때마다 내 (현재 정적으로 구현 된) 명령 사전을 업데이트 할 필요가 없다는 것입니다.
제 질문은 두 가지입니다. 첫째, getattr은 eval과 동일한 문제가 있습니까? 둘째, 나는 내 껍질의 효율성에 타격을 가할 것인가? 얼마나 많은 메소드/명령어가 중요한가? 나는 현재 30 개의 명령을보고 있는데, 결국 두 배가 될 수 있습니다.
경우 당신은 pyparsing http://pyparsing.wikispaces.com/을 보지 않았습니다. 정말로해야합니다. __NO__ 파이썬에 자신의 파서를 작성하는 진정한 이유가 있습니다. –
퍼지, 나는 내가 하나를 생각할 수 있다고 확신한다. 그리고 나는 그것을 위해 무엇을하고 있는가 : 학습 목적. 이 현재 프로젝트를 시작하기 전에 함수의 첫 번째 클래스 객체라는 의미를 이해하지 못했습니다. 나는 참고를 그러나 평가한다. 나는 그것을 들여다 볼 것이다. – Wilduck