error 6

[Python - Error] NameError: ... / AttributeError: ... / __getattr__ raise NameError(attr) - 발생 원인 및 체계적인 디버깅 방법

요약 - __getattr__ 매서드는 클래스로부터 생성된 인스턴스가 attribute(매서드, 함수, 변수 등)를 찾을 수 없을 경우에 호출됩니다. - NameError 역시 요청한 attribute가 존재하지 않는 경우에 발생합니다. - 따라서, 호출하고자 하는 attribute를 아래 표와 같이 살펴봅시다. - 코드 구조나 완결성과 같이 확인하는데 오래걸리고 복잡한 것 부터 의심하지 말고, 아래 표의 우선순위가 높은 것 부터 (빠르게, 확인하는데 리소스가 적게 드는 것부터) 순서대로 확인해 봅시다. 우선 순위 확인 사항 예시 원했던 것 에러 발생 1 오타 여부 np.zeros(5) np.zoros(5) 2 대소문자 구분 np.zeros(5) np.Zeros(5) 3 library의 적절한 impor..

Python 2022.04.13

[Python - Tip] __getattr__ vs. __getattribute__ : 차이 및 활용 예시 (feat. __init__)

요약 - 클래스의 __init__은 훨씬 익숙할 테니 이와 비교해서 설명을 드리면... - __init__ 은 클래스로 부터 인스턴스를 생성할 때, "자동적으로" 실행이 되는 매소드라고 볼 수 있습니다. - __getattr__ 이나, getattribute__ 도 __init__ 과 유사하게 특정 시점에 실행되는 매소드 역할을 하는데, 각각 실행되는 때가 다르다고 보면 되겠습니다. - 프로그램의 특정 동작에서 정보를 가로채서 원하는 다른 동작을 하기 때문에 Hooking (갈고리, 낚시바늘) 이라고 합니다. - 그럼 __getattr__ 이나, getattribute__ 은 언제 실행될까요? 다음과 같이 정리할 수 있겠습니다. 매소드 실행 시점 __init__ 맨 처음 인스턴스를 생성할 때 __geta..

Python 2022.04.13

[Python - Error] SyntaxError: unexpected EOF while parsing - 코드 구문이 잘못 되었을 때 발생하는 에러

에러 메시지 - SyntaxError: unexpected EOF while parsing - 특히 괄호 짝이 안맞을 경우 에러 메시지에서 어느 지점이 잘못 되었는지 정확히 보여주지 못할 때가 존재 1 2 3 4 File "d:/14-ETC/VisualStudioCode/python/20200901_Test/main.py", line 79 ^ SyntaxError: unexpected EOF while parsing cs 해결 방법 - 괄호 쌍, 따옴표 쌍 등 구문이 알맞게 적혀있는지 확인 - 문제 발생 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import glob import os class PRACTICE: def __init__(self): return ..

Python 2020.09.02

[Fortran - Compile Error] Error: Invalid form of PROGRAM statement at (1) - 문제가 없어보이는 포트란 코드가 컴파일이 안될 때

에러 메시지 코드 - 문제의 여지가 없는 매우 간단한 코드 1 2 3 4 5 6 7 8 9 PROGRAM Next_Line IMPLICIT NONE WRITE(*,*) "Nine 1" WRITE(*,*) "Nine 2" WRITE(*,*) "Nine 3" END PROGRAM Next_Line cs 컴파일 결과 >> Error: Invalid form of PROGRAM statement at (1) 1 2 3 4 5 ./Blog_NextLine.f90:1.8: PROGRAM Next_Line IMPLICIT NONE WRITE(*,*) "Nine 1" WRITE(*,*) "Nine 2" WRITE(*,*) "Nine 3" END PROGRAM 1 Error: Invalid form of PROGRAM ..

Fortran 2020.08.28

[Fortran - Compile Error] Error: IF clause at (1) requires a scalar LOGICAL expression - 포트란 컴파일이 안될 때

에러 메시지 >> Error: IF clause at (1) requires a scalar LOGICAL expression 1 2 3 4 5 ./SOURCE/{file_name}.f90:8523.9: IF(DEAD_SIDE_TM(I))THEN 1 Error: IF clause at (1) requires a scalar LOGICAL expression cs 해결방법 - 에러 메시지가 IF 문에는 logical 표현이 필요하다고 하니, integer 변수 DEAD_SIDE_TM(I)만 사용하지 말고, logical 표현으로 변경 - 문제 발생 코드 1 2 3 4 5 IF(DEAD_SIDE_TM(I)) THEN ... ENDIF cs - 변경 및 해결 완료 코드 1 2 3 4 5 IF(DEAD_SIDE..

Fortran 2020.08.07

[Linux - Error] $'\r': command not found - Linux shell script 실행 시 발생 오류

해결 방법 - Linux 커맨드 창에 다음과 같이 입력 >> sed -i -e 's/\r$//' {파일명} 원인 - Window와 Linux의 줄바꿈을 위한 문자가 다름 (보통의 경우 줄바꿈을 위한 문자는 사용자에게 표시 X) Window : \w\n Linux : \n - 만일 Window 에서 스크립트를 작성해서, 줄바꿈 문자가 \w\n 로 되어 있다면, Linux에서는 \r 을 인식하지 못함 - 그래서 해결방법에서는 sed 라는 명령어를 통해 줄바꿈 문자를 Linux 용으로 변경

Linux 2020.06.30