[Python] 내장함수 getattr()를 활용해 코드 간소화 시키기
python에서 getattr함수를 이용하면 위의 링크에서 설명해주고 있는 것처럼 method의 이름을 string으로 호출할 수 있게 된다.
이런 기능은 함수 포인트를 사용하는 것처럼 코드를 깔끔하게 만들 수 있는데 사용될 수 있다고 생각되어 유용하게 활용될 수 있겠다.
그런데 정작 getattr 함수를 찾았던 내용과는 또 달라서 더 찾아봐야했다.
label_type = getattr(processor, "label_type", None)
is_regression = getattr(processor, "is_regression", False)
has_sample_weights = getattr(processor, "weight_key", False)
위와 같은 코드였는데 세 항목은 모두 함수가 아니었다. 위의 두 개는 class에 정의된 변수였고, 마지막 string은 선언한 class에서 정의되지 않은 문자열이었다.
추측하기로는 class의 내부 변수로 세 번째 값을 설정하고 그 값을 다시 반환하는게 아닐까? 하고 추측을 했지만 자신할 수가 없어서 더 찾아 보았다.
이 사이트에서 찾을 수 있었는데 class에서 정의되지 않은 변수의 경우 오류 메시지가 반환되는데 이때 오류를 발생하지 않고 반환값의 default 값을 지정해주는데 사용된다고 한다.
default (Optional) - value that is returned when the named attribute is not found
찾고 보니 아 이게 있으면 코드가 더 깔끔하곘다 싶다.
강제로 값을 할당하는 것보다 기존의 인스턴스의 값도 바꾸지 않으니 더 유용할 것 같고..
reference를 찾아보는게 더 필요하구나 싶다.
'개발' 카테고리의 다른 글
Abseil Python Common Libraries (0) | 2021.05.07 |
---|---|
docker를 이용한 tensorflow 2.x 개발환경 설정 (0) | 2021.05.04 |
pdf2docx를 이용한 pdf 변환 코드 (0) | 2021.04.30 |
eclipse encoding 변경 (0) | 2014.08.20 |
[펌] 언어학 관련 원어 해석 (0) | 2011.05.17 |