또 다른 가능한 옵션이지만 이전에 의미하는 바에 따라 다릅니다 .
undefined = object()
class Widget:
def __init__(self):
self.bar = 1
def zoom(self):
print("zoom!")
a = Widget()
bar = getattr(a, "bar", undefined)
if bar is not undefined:
print("bar:%s" % (bar))
foo = getattr(a, "foo", undefined)
if foo is not undefined:
print("foo:%s" % (foo))
zoom = getattr(a, "zoom", undefined)
if zoom is not undefined:
zoom()
산출:
bar:1
zoom!
이를 통해 값이없는 속성을 확인할 수도 있습니다.
그러나! 이 경우에는 작동하지 undefined
않으므로 여러 위치를 실수로 인스턴스화하고 비교하지 않도록 매우주의하십시오 is
.
최신 정보:
위의 단락에서 경고 한 내용으로, 일치하지 않는 여러 정의되지 않은 항목이 있으므로 최근 에이 패턴을 약간 수정했습니다.
undefined = NotImplemented
NotImplemented
와 혼동하지 말고 NotImplementedError
내장되어 있습니다. JS의 의도와 반 일치하고 undefined
어디서나 정의를 재사용 할 수 있으며 항상 일치합니다. 단점은 부울에서 "트러스트"이고 로그 및 스택 추적에서 이상하게 보일 수 있다는 것입니다 (그러나이 컨텍스트에서만 나타남을 알면 빠르게 극복합니다).
import string hasattr(string, "lower")