아래와 같이 클래스로 이루어진 패키지나 라이브러리 깃헙 코드를 보다보면 아래와 같이 getattr이라는 녀석(?)을 자주 만나게 되는데요
이번 포스팅에서 이 친구가 누구인지에 대해 알아보도록 하겠습니다.
우선 해당 함수의 생김새를 보면 녀석의 기능을 유추할 수 있는데요.
getattr --> get attribute 즉 클래스의 attribute 값을 얻어오는 함수라고 볼 수가 있습니다.
# attribute를 모르시는 분들 위해 간단히 설명 드리자면.
클래스는 기본적으로 빨간색 부분과 파란색부분(함수)로 이루어져 있는데요.
attribute는 빨간색 부분을 의미합니다.
예를 들어 Program이라는 클래스에서 language 값을 추출하고 싶을때 사용하는 것이죠.
실제로 어떻게 사용되는지는 코드를 통해 알아보도록 하겠습니다.
getattr 사용법
class Program:
language = "Python"
version = "3.6"
def hello(self):
print('hello')
print(getattr(Program,'language'))
output :
위와 같이 써주시면 됩니다. 첫번째 인자에 Object 즉 여기선 클래스를 넣어주고요
두번째 인자로는 우리가 찾고 싶은 property를 적어주는데요, 이때 주의할점은 string 형태로 적어줘야 된다는 것입니다.
클래스를 조금 사용해보신들은 아시겠지만 이와 같은 기능을 간단히 하는 방법이 있습니다.
바로 아래와같이 해주면되죠.
Program.language
output :
getattr은 디폴트값도 지정이 가능합니다. 이 디폴트값은 해당 attribute가 없을 때 대신 사용해주는 값인데요
만약 Program.language 방식으로 클래스에 없는 attribute를 불러오게된다면 오류가 나지만,
Program.x
output :
getattr 을 사용하면 디폴트값이 output으로 나오는것을 알 수 있습니다.
getattr(Program,'x','hello')
output :
getattr에 대해 알아본김에 setattr 도 알아보죠. 눈치채셨겠지만
attribute를 새로 정해주는기능을 하는것이 setattr 입니다.
사용방법은 코드로 보시죠
setattr 사용법
setattr(Program,'x','hello')
print(Program.x)
output :
보시는 것처럼 해당 클래스에 x라는 property에 hello라는 값이 할당 된것을 알 수 있습니다.
마찬가지로 아래와 같은 방식으로도 사용가능합니다.
Program.x = 'hello'
마지막으로 특정 property를 삭제하고 싶다면 어떻게 할까요?
delattr 사용법
delattr(Program, 'x')
print(Program.x)
output :
정상적으로 해당 property가 삭제된것을 알 수 있습니다.
같은 방식으로 아래와 같이 사용할 수 있으니 참고 바랍니다.
del Program.x
'파이썬 > 파이썬 중급' 카테고리의 다른 글
[파이썬] argparse 란? | 사용법 (0) | 2022.08.29 |
---|---|
[Python기초] 특정 폴더에 있는 파일명 추출 하는법 완벽정리 (1) | 2022.04.19 |
[파이썬 중급] @property, @함수명.setter 사용법 (1) | 2021.07.23 |
[파이썬 중급] 진법 변환(N진수 -> 10진수 | 10진수 -> N진수) (0) | 2021.06.18 |
[파이썬 중급] map, filter | zip + list comprehension (0) | 2021.05.18 |
댓글