본문 바로가기
  • ▒ 네모의 쉽게 배우는 네트워크 | 개발 ▒
파이썬 개발/트러블슈팅

AttributeError: 'int' object has no attribute 'replace'

by 너l모 2021. 9. 24.
반응형

※ 업무하면서 습득한 내용들을 정리해 놓은 포스팅입니다 :P 추가로 궁금하신 점은 댓글로 남겨주시고 필요한 자료 있으면 요청주세요! 잘못된 내용이 있으면 고쳐주시면 감사하겠습니다. 자료 퍼가실 때는 출처 남겨주세요!


 ο 목차

     


    ※ 코드 보는 방법 참고

    ㅇ 달러 기호($)가 있는 경우 -> 리눅스 터미널에서 CLI 명령어 입력

    ㅇ "=#" 기호가 있는 경우 -> psql 쉘에서 명령어 입력

    ㅇ 꺽쇠가 하나 있는 경우(>) -> 윈도우 명령 프롬프트(cmd)에서 명령어 입력

    ㅇ 꺽쇠가 세개 있는 경우(>>>) -> python 쉘에서 명령어 입력


    1. 문제 사례

    replace 작업 중 Attribute 에러 발생

     

    2. 오류 메세지 내용 상세

    AttributeError: 'int' object has no attribute 'replace'

     

    3. 문제 원인

    AttributeError는 객체 혹은 클래스에 사용할 수 없는 속성을 사용하는 경우 발생

    ※ 속성(Attribute)이란 클래스 내부에 포함되어 있는 메소드(함수)나 변수(객체)를 의미 

     

    예를 들어, 위의 오류 메세지 내용 중 replace는 문자열 객체에 대해서 내용 중 일부를 치환할 수 있도록 하는 str 클래스의 함수(메소드)인데 문자열 객체가 아닌 정수형 객체(int)에 사용하니 위와 같은 오류가 발생함

     

    4. 문제 해결 방법

    1)  변수 타입을 문자열로 변경하여 해결 

    - 정수형 객체를 강제로 문자열 객체로 변경하여 replace 함수를 적용시키는 방법

    - 테스트 코드

    # 정수형 변수인 test가 있다고 가정
    test = 123512
    
    # replace 함수를 써서 1을 9로 변경
    test = str(test).replace('1','9')
    
    # 결과 출력
    print(test)

    ※ replace 함수는 객체 그 자체를 변경시키는 함수가 아니라 기존 객체는 그대로 두고 replace 작업이 끝난 새로운 객체를 반환하는 함수이므로 사용 목적에 따라 결과값을 저장할 적절한 객체 설정이 필요함.

     

    2) 예외 처리하여 해결

    - 반복문을 돌리는 중 일부 항목에 대해서만 Attribute 에러가 발생하는 경우 유용함

    - 테스트 코드

    # 문자와 숫자가 혼합된 test 라는 리스트가 있다고 가정
    test = [123512,'this\nis\ntest\ncode',0,'hello\nword']
    
    # 반복문 시작
    i=0
    
    while i < len(test) :
            try :
                    test[i] = test[i].replace('\n',' ')
            except AttributeError :
                    pass
            i+=1
    
    # 결과 출력
    print(test)

    ※ 좋아요와 구독은 큰 힘이 됩니다. 감사합니다. 

     

     

    반응형

    댓글