[Python] 내장함수 getattr()를 활용해 코드 간소화 시키기

 

[Python] 내장함수 getattr()를 활용해 코드 간소화 시키기

getattr()의 기능 getattr(object, 'name') 이라는 함수는 object라는 오브젝트 내부의 name이라...

blog.naver.com

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의 내부 변수로 세 번째 값을 설정하고 그 값을 다시 반환하는게 아닐까? 하고 추측을 했지만 자신할 수가 없어서 더 찾아 보았다.

Python getattr()

 

Python getattr()

Python getattr() The getattr() method returns the value of the named attribute of an object. If not found, it returns the default value provided to the function. The syntax of getattr() method is: getattr(object, name[, default]) The above syntax is equiva

www.programiz.com

이 사이트에서 찾을 수 있었는데 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

+ Recent posts