개요
이번 글에서는 Python에서 객체의 속성을 다룰 때 사용하는 setattr, getattr, hasattr, delattr 함수에 대해 정리한다.
예시 클래스 및 객체는 아래와 같이 사용한다.
class Person:
name = 'Adam'
p = Person()
print(p.name)
setattr
객체에 속성을 설정한다. 설정하고자 하는 값이 객체에 없다면 속성을 추가하고 값을 할당한다. 반환 값은 없다.
setattr(object, attribute_name, value)
예시)
class Person:
name = 'Adam'
p = Person()
setattr(p, 'name', 'James')
setattr(p, 'age', 20)
print(p.name, p.age
getattr
객체의 속성에 해당하는 값을 반환한다.
getattr(object, name[, default])
getattr 함수는 아래 구문과 동일하다.
object.name
다만 객체에 속성이 없는 경우, 기본값이 설정되어 있으면 기본값이 반환되고 기본값이 설정되어 있지 않으면 AttributeError가 발생한다.
예시 )
class Person:
name = "Adam"
p = Person()
print(getattr(p, "name"))
print(p.name)
hasattr
객체에 지정한 속성의 존재 여부를 판단한다. 속성이 있으면 True를, 없으면 false를 반환한다.
hasattr(object, name)
예시 )
class Person:
name = "Adam"
p = Person()
print(hasattr(p, "name"))
print(hasattr(p, "age"))
delattr
클래스에서 속성을 삭제한다. 반환값은 없다.
delattr(class, name)
예시 )
class Person:
name = "Adam"
age = 20
p = Person()
delattr(Person, 'age')
print(hasattr(p, 'age'))
참고 문서
https://www.programiz.com/python-programming/methods/built-in/setattr
https://www.programiz.com/python-programming/methods/built-in/getattr
https://www.programiz.com/python-programming/methods/built-in/hasattr
https://jeonghyeokpark.netlify.app/python/2020/12/11/python1.html