더북(TheBook)

17.11 디버깅

프로그램을 실행하는 모든 지점에서 객체에 속성을 추가할 수 있지만, 타입은 같지만 속성이 다른 객체를 갖고 있다면 실수하기 쉽다. 따라서 _ _init_ _ 메서드에서 객체의 속성을 모두 초기화하는 것이 좋다.

객체에 특정 속성이 있는지 확실하지 않다면 내장 함수 hasattr을 사용할 수 있다(262쪽의 15.7 디버깅 참조).

속성에 접근하는 다른 방법으로는 내장 함수 vars가 있다. vars는 객체를 받아서 속성 이름(문자열)과 값을 연결한 사전을 반환한다.

>>> p = Point(3, 4)

>>> vars(p)

{'y': 4, 'x': 3}

디버깅 목적이라면 다음 함수가 유용할 것이다.

def print_attributes(obj):

for attr in vars(obj):

print(attr, getattr(obj, attr))

print_attributes는 사전을 순회하면서 각 속성의 이름과 값을 출력한다.

내장 함수 getattr은 객체와 속성 이름(문자열)을 받아서 속성의 값을 반환한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.