Profile picture

[Python] 파이썬 내장 함수 getattr, setattr, hasattr, delattr 사용 예시 익히기

JaehyoJJAng2024년 06월 07일

setattr()

  • object의 속성(attribute) 값을 설정하는 내장 함수

>> setattr(object, attribute_name, value)

object에 존재하는 속성 값을 바꾸거나, 새로운 속성을 생성하여 값을 부여


예제 실행 전 setattr 예제를 위한 object를 다음과 같이 생성

>>> class sample():
...     def __init__(self, x: int) -> None:
...         self.x = x
>>>
>>> c = sample(x=1)
>>> c.x
1

예제 1)

기존 속성의 값을 변경하는 경우

>>> setattr(c, 'x', 10)
>>> c.x
10

새로운 속성을 생성하여 값을 할당하는 경우

>>> setattr(c,'y', 5)
>>> c.y
5

getattr()

  • object의 속성(attribute) 값을 확인하는 내장 함수

| >> getattr(object, attribute_name [, default])


예제 실행 전 getattr 예제를 위한 object를 다음과 같이 생성

>>> class sample():
...     def __init__(self, x: int) -> None:
...         self.x = x
>>>
>>> c = sample(x=1)
>>> c.x
1

예제 2)

기존 속성의 값을 가져오는 경우

>>> getattr(c, 'x')
1

기존에 존재하지 않는 속성을 가져오려고 하는 경우 (기본 값이 없는 경우)

>>> getattr(c, 'y')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: sample instance has no attribute 'y'

기존에 존재하지 않는 속성을 가져오려고 하는 경우 (기본 값이 있는 경우)

>>> getattr(c, 'y', 10)
10

delattr()

  • object에 존재하는 속성(attribute)을 제거하는 내장 함수

>> delattr(object, name)


예제 실행 전 delattr 예제를 위한 object를 다음과 같이 생성

>>> class sample():
...     def __init__(self, x: int) -> None:
...         self.x = x
>>>
>>> c = sample(x=1)
>>> c.x
1

예제 3)

기존 속성을 제거하는 경우

>>> delattr(c, 'x')

hasattr()

  • object의 속성(attribute) 존재를 확인하는 내장 함수

>> hasattr(object, name)


argument로 넘겨준 object에 x 속성이 존재한다면 True, 아니면 False를 반환한다.

내부적으로 getattr(object, name)을 이용하는데 해당 함수 수행 시 exception이 발생하는지 판단한다.


예제 실행 전 hasattr 예제를 위한 object를 다음과 같이 생성

>>> class sample():
...     def __init__(self, x: int) -> None:
...         self.x = x
>>>
>>> c = sample(x=1)
>>> c.x
1

해당 object에 x 속성이 존재하는 경우

>>> hasattr(c, 'x')
True

Loading script...