2012-10-10 2 views

답변

4

+ 연산자는 unary plus operator입니다. 숫자 인수를 변경하지 않고 리턴합니다. 그래서 ++x+(+(x))로 분석하고, (한 x이 다수 포함으로) 변경 x을 제공한다 : 사용자 정의 클래스의 객체에서 호출

>>> ++5 
5 
>>> ++"hello" 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: bad operand type for unary +: 'str' 

+ 경우가 존재하는 경우 __pos__ special method가 호출됩니다 ; 그렇지 않으면 위와 같이 TypeError이 발생합니다.

import ast 
print(ast.dump(ast.parse('++x', mode='eval'))) 
Expression(body=UnaryOp(op=UAdd(), operand=UnaryOp(op=UAdd(), operand=Name(id='x', ctx=Load())))) 
+0

주셔서 감사합니다, 정말 유용한 답변, 특히 팁을 찾고 :

우리는 파이썬이 식을 구문 분석하는 방법을 보여 ast module를 사용하여이 문제를 확인하려면 ast 모듈. 나의 즉각적인 반응은 "변하지 않은 수치 적 주장을 되 돌린다"는 것이었다. 요점은 무엇인가? 하지만 사람들이 사용자 정의 클래스를 사용하여 그 용도를 찾을 수있을 것입니다. – user1734068

관련 문제