기본 수 "및"재정의 할 수 있습니까? 예를 들어 나는이 출력됩니다이내장 "및"
class foo():
def __and__(self,other):
return "bar"
처럼 뭔가를하려고하면
>> foo() and 4
4
>> foo().__and__(4)
'bar'
내 직감이 (가)에 건설하고 재정의 할 수 없습니다 및 혼란을 유발하지 오버라이드 (override)하지 말아야한다는 것입니다.
은 내가 추측하고있을 필요하지 않기 때문에 그것은 비트 연산자 &
아닌 논리 연산자를 대체
def and(self,other):
if(not bool(self)):
return self
else:
return other
두 피연산자가 평가되지 않은 경우를 제공 할 수 있습니까? 나는 하나를 생각할 수 없다. – Doboy
'x = 거짓 및 foo()'. 'print' 문을 포함하도록'foo()'를 쓰면 결코 호출되지 않는다는 것을 쉽게 볼 수 있습니다. 부울'and'는 피연산자 중 하나가 거짓이면 참이 될 수 없으므로'and'가 첫 번째 피연산자가'False' 인 경우 두 번째 피연산자를 평가하지 않습니다. '또는'이 다른 방법입니다. 첫 번째 피연산자가 '참'이면 두 번째 연산은 평가할 필요가 없습니다. 이것은 단락으로 알려져 있으며, 부작용은 때로는 자체적으로 사용됩니다 : 예를 들어'arg = arg or default'는'arg'가 비어 있으면 0으로, 또는 '없음'. – kindall