Python

[Python] 객체 속성 관련 함수

비번변경 2023. 4. 16. 23:26

개요

이번 글에서는  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