반응형
파이썬에서 클래스의 "불량"정의
순진하게 예상했던대로 이것이 작동하지 않는 이유는 무엇입니까?
class Foo(object):
def __init__(self):
self.bar = 3
def __bool__(self):
return self.bar > 10
foo = Foo()
if foo:
print 'x'
else:
print 'y'
(출력은 x
)
Python 2-3 호환성을 위해 다음을 예제에 추가하십시오.
Foo.__nonzero__ = Foo.__bool__
또는 다음을 포함하도록 Foo의 원래 정의를 확장합니다.
__nonzero__ = __bool__
물론 메서드 이름이있는 역으로 정의 할 수도 있습니다. 여기에 메서드 이름 __nonzero__
을 할당하고.에 할당 할 수도 __bool__
있지만, 이름 __nonzero__
은 객체와 동등성을 기반으로 한 객체를 진실 또는 거짓으로 해석하는 Python의 원래 C-ishness의 유산 일 뿐이라고 생각합니다. 제로. 위의 명령문을 추가하면 코드가 Python 2.x에서 작동하며 Python 3.x로 업그레이드 할 때 자동으로 작동합니다 (결과적으로 할당을 __nonzero__
.
이 __bool__
메서드는 Python 3에서 사용됩니다 __nonzero__
. Python 2의 경우 .
해당하는 특수 메서드가 Python 3이 __nonzero__()
아닌 Python 2에서 호출 __bool__()
되기 때문입니다.
참고 URL : https://stackoverflow.com/questions/8205558/defining-boolness-of-a-class-in-python
반응형
'programing tip' 카테고리의 다른 글
CURL을 사용하는 PHP의 SOAP 요청 (0) | 2020.11.20 |
---|---|
jQuery-ajax POST에 대한 양식 값 가져 오기 (0) | 2020.11.20 |
'mm / dd / yyyy'형식에서 루비 DateTime 구문 분석 (0) | 2020.11.20 |
Android 5.0 android : elevation은 View에서 작동하지만 Button은 작동하지 않습니까? (0) | 2020.11.20 |
Django REST Framework에서 CORS를 활성화하려면 어떻게해야합니까? (0) | 2020.11.20 |