2011-01-17 8 views
2

**kwargs을 비정상적인 방법으로 사용하려고 생각하고 있습니다. 데이터 제공자가 아니고 과부하 대체 도구가 아닙니다. 이런 식으로 모든 키워드 인수는 하나의 유형이어야합니다 (예 : 구체적으로 형성된 튜플 및 그 밖의 다른 방법). 예 :** kwargs는 __init__의 비 구성 데이터에 적합한 선택입니까?

class SomeClass(object): 
    '''All **kwargs should be in ("string", 1, True) form''' 
    def __init__(self, some_param, **kwargs): 
     self.param = some_param 
     for arg in kwargs.itervalues(): 
      if not isinstance(arg[0], str): 
      ... 

     self.some_dict = kwargs 

괜찮습니까? 나는 이상하게 느껴진다. 그것은 비범 한 것처럼 보인다.

+0

당신도'* args'에 익숙합니까? – ulidtko

+0

@ulidtko 예. 근본적으로 질문은 둘다에 관한 것이지만, 결국 더 복잡하기 때문에 결국 kwargs로 끝났습니다. –

+1

이 코드는 여러분이 기대하지 않는 것 같습니다. kwargs는 dict이며 키는 항상 문자열입니다. arg (kwargs의 arg의 경우)를 반복 할 경우 arg는 항상 문자열이므로 arg [0]도 항상 문자열입니다. –

답변

3

dict 생성자 파이썬으로 무엇을 참조하십시오 : 키워드 인수

>>> dict(one=1, two=2, three=3) 
{'three': 3, 'two': 2, 'one': 1} 

또한 "창조"를 사용합니다. 표준 형식에서 작동하고 응용 프로그램에서 의미가있는 경우 이동하십시오.

+0

중력이 잘못 될 수는 없다고 생각합니다. 감사! –

관련 문제