2017-10-19 16 views
0

간단한 함수를 가정 허용 문자열리스트를 선택할 :(얻는 부호화) 파이썬 코드 완성

def example(formula="") 
    ... 

인수 "식"은 2,400 가능한 화학식 중 하나를해야하는 경우. 2400 문자열 목록에서 한 문자열을 선택하여 코드 완성을 얻을 수있는 방법이 있습니까?

첫 번째 아이디어는 클래스 속성 목록에서 선택하는 것이 었습니다. 그러나 디렉터리() 메서드를 사용할 수 없습니다. 이러한 수식 문자열은 종종 특성 이름으로 사용할 수 없습니다.

무언가의 속성을 사용하지 않고 선택 사항을 나열하는 다른 방법이 보이지 않습니다.

감사합니다.

+0

코드 완성은 편집기 또는 코딩 환경의 기능입니다. 당신이 사용하고있는 것을 지정할 수 있습니까? –

+0

내 대상은 Jupyter이지만 PyCharm도 사용합니다. 둘 다 _dir_()을 보면 시작할 것입니다. –

+0

죄송합니다. 내 질문에 명확하지 않았습니다. 인수 코드 완성에 만족합니다. 그러나 클래스 속성 코드 완성도 만족합니다. 이것은 _dir_()에 대한 나의 코멘트를 설명합니다. 나는 가능한 인수를 선택하는 것에 대한 아날로그를 모른다. –

답변

1

특히 형식 힌트를 사용하는 경우 인스턴스 코드에 대한 PyCharm이 정중하게 완성되는 enum을 사용하십시오.

import enum 

class ChemFormula(enum.Enum): 
    Chlorine = "cl2" 
    Hydrogen = "h2" 
    Water = "h2o" 


def example(formula: ChemFormula) -> None: 
    .... 
+0

enums 쉼표가 필요하지 않습니다. 실제로, 그들은 값을 터플로 변환 할 것이므로 바람직하지 않습니다. – Felk

+0

그런 간단한 해결책을 가져 주셔서 감사합니다. Jupyter의 간단한 예제에서 테스트 했으므로 유용 할 것입니다. 나는 열거 형의 필요성을 보지 못했다. 그것도 Jupyter에서 작동하지 않는다. 단 하나의 단점 : 데이터베이스의 2400 수식에 대해 유효한 속성을 자동으로 생성해야하므로 그리 명확하지 않습니다. –

+0

쉼표가 수정되었습니다. –

0

문자열 목록에서 임의의 문자열을 가져 오시겠습니까?

from random import choice 

formulas = ['f1', 'f2'] 
formula = choice(formulas) 
example(formula = formula) 

그렇다면 단순히 색인을 생성하면 (formulas[int]) 트릭을 수행해야합니다.

+0

무작위로 선택하지 않아도됩니다. 제 경우에 도움이되는 자료가 필요합니다. 나는 너의 제안을 이해하지 못한다. –

+0

그래, 난 대답을 찾은 것 같아 :) – Exa