프로그래밍언어/파이썬[Error]

[파이썬][Error] 047. AttributeError - 'NoneType' object has no attribute 'upper'

about_IT 2025. 5. 28. 23:40
728x90

AttributeError: 'NoneType' object has no attribute 'upper' 오류는 None 값에 대해 문자열 메서드인 upper()를 호출하려고 할 때 발생합니다. 즉, 문자열을 기대했던 변수에 실제로는 None이 할당되어 있는 상황입니다.

이 오류는 보통 함수나 연산의 반환값이 None인데도 불구하고 그 결과에 대해 문자열 메서드를 호출하려는 경우에 발생합니다.

● 오류 발생 예시

name = None
print(name.upper())

이 경우 nameNone이기 때문에 문자열이 아니며, 따라서 upper() 메서드를 사용할 수 없습니다.

● 주요 원인

  • 입력값이 존재하지 않아 None이 기본값으로 설정된 경우
  • 함수가 명시적으로 값을 반환하지 않아 None이 반환된 경우
  • 딕셔너리에서 존재하지 않는 키를 dict.get()으로 조회했으나 기본값이 None인 경우

● 해결 방법

  • 변수의 값이 문자열인지 확인한 후 메서드 호출
  • None인 경우를 처리하기 위한 기본값 설정
  • dict.get('key', '')처럼 None 대신 빈 문자열을 반환하도록 처리

● 예시 코드 (정상 처리)

name = None
if name is not None:
    print(name.upper())
else:
    print("No name provided")

● 결론

모든 객체가 메서드를 지원하는 것은 아니며, 특히 None은 아무런 메서드도 가지고 있지 않습니다. 따라서 문자열 메서드를 호출하기 전에 값이 None이 아닌지 확인하는 습관이 중요합니다.

728x90