프로그래밍언어/파이썬[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())
이 경우 name
은 None
이기 때문에 문자열이 아니며, 따라서 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