2016-06-07 2 views

답변

2

당신은 가까이 갈 수

def magic(func): 
    def wrapper(*args): 
     return func(' - '.join(map(str, args))) 
    return wrapper 

하지만 b의 몸이 *args 때문에 튜플로 args 볼 수 있기 때문에이 ('1 - 2 - 3',)를 출력하고, 나는 장식이 그 주위를 얻을 수 있습니다 의심한다. 몸이 print(args[1]) 인 경우 어떻게 될 것으로 예상됩니까?

+0

이것은 내가 원하는 것이지만, 나를 위해 중요한 부분은 튜플 인 args를 둘러싼 것입니다. 이 기능을 변경하기 위해 메타 클래스를 사용할 수 있습니까? – 2Cubed

+0

본문은 일반적으로'args'를 색인화해서는 안됩니다 - 그것은 문자열 일 것으로 기대합니다. (그렇다면'args [1]'은 문자열의 두 번째 문자를 반환 할 것입니다.) – 2Cubed

+0

이것은 아주 이상한 것을 요청한 첫 번째 질문이 아닙니다. 이는 버그가 있고 혼동스러운 코드로 이어질 가능성이 있습니다. 왜 이걸하고 싶어? –

0

그래서 문제의 일부는 문자열이 필요한 정수를 사용하므로 문자열로 변환 한 다음 조인 기능을 사용하는 것입니다.

+0

그게 효과가 있지만, 내가 원하는 건 아니에요. 그 기능을 데코레이터에서 원한다면, 함수 자체에서''1 - 2 - 3 "'(터플이 아닌) 문자열로'args'를 액세스 할 수있는 능력이 필요합니다. – 2Cubed

+0

요구 사항에 맞게 업데이트했습니다. – whybull

+0

이것은 작동하지만 실제로'a'를 실행하지 않습니다. 출력은'1 - 2 - 3'을 표시하지만,'Arguments was 1-2-2 '을 결코 보여주지 않습니다. 'magic' 데코레이터 선언에서'func()'는 절대로 호출되지 않습니다. – 2Cubed

관련 문제