본문 바로가기
프로그래밍/Python

파이썬(Python) - 클래스(객체) 속성 존재 확인, 속성 변경하기, 속성 값 확인, 속성 삭제 (feat. hasattr, setattr, getattr, delattr)

by 부자 꽁냥이 2022. 9. 26.

파이썬(Python)에는 클래스(또는 객체)의 속성을 다루는 여러 가지 함수들이 존재한다. 속성이 존재하는지 알려주는 hasattr, 속성을 값을 변경하는 setattr, 속성 값을 확인하는 getattr 그리고 속성을 삭제하는 delattr이 있다. 이번 포스팅에서는 이러한 속성 관련 함수들의 사용법을 알아보고자 한다.


   클래스(객체) 속성 존재 확인, 속성 변경하기, 속성 값 확인, 속성 삭제 (feat. hasattr, setattr, getattr, delattr)

1) 속성의 생사를 확인하라! : hasattr

hasattr는 객체 안에 해당 속성이 있는지 여부를 부울(bool)값으로 알려준다. 먼저 예제용 클래스(Person)를 정의하고 인스턴스를 생성해준다.

 

class Person:
    def __init__(self, age, name):
        self.age = age
        self.name = name
        
    def older(self):
        self.age += 1
        
    def change_name(self, new_name):
        self.name = new_name
        
person = Person(20, 'Park')

 

hasattr는 첫 번째 인자에 객체 그리고 확인하고자할 속성 이름을 의미하는 문자열을 두 번째 인자에 넣어준다.


hasattr( 객체, 속성 이름)


이제 인스턴스 person에 change_name이라는 메서드, age 그리고 height라는 속성이 있는지 확인해보자.

 

print(hasattr(person, 'change_name')) ## change_name 메서드가 있는가?
print(hasattr(person, 'age')) ## age 속성이 있는가?
print(hasattr(person, 'height')) ## height 속성이 있는가?

 

hasattr


2) 속성을 (무작정) 변경하기 : setattr

setattr는 객체가 갖고 있는 속성 값을 변경해준다. 사용법은 다음과 같다.


setattr( 객체, 속성 이름, 값)


setattr를 이용하여 기존 age 속성 값 20을 30으로 변경해보자.

 

print(person.age)
setattr(person, 'age', 30) ## 기존 속성에 대하여 값을 변경
print(person.age)

 

setattr 사용 예제1

 

setattr는 기존에 없던 속성을 만들어서 값을 할당할 수도 있다.

 

setattr(person, 'height', 180) ## 새로운 속성 height을 만들고 값을 할당
print(person.height)

 

setattr 사용 예제2

 

setattr는 메서드(함수)를 필드로 바꿔버리는 성질이 있다. 아래 코드는 older라는 메서드를 필드로 바꾼 뒤 30을 할당하게 된다.

 

print(person.older)
setattr(person, 'older', 30) ## 메서드를 속성으로 바꿔 버린다.
print(person.older)

 

setattr 사용 예제3


3) 속성값을 확인하자. : getattr

getattr는 객체가 갖고 있는 속성 값을 확인해주는 용도로 사용된다. 사용법은 아래와 같다.


getattr( 객체, 속성 이름)


아래 코드는 height 속성 값을 확인하는 것이다.

 

print(getattr(person, 'height')) ## person.height와 동일

 

getattr


4) 속성을 삭제하자! : delattr

delattr는 객체가 갖고 있는 속성을 삭제할 때 사용된다. 사용방법은 아래와 같다.


delattr( 객체, 속성 이름)


아래 코드는 delattr를 이용하여 height를 삭제한 것이다. delattr는 객체가 갖고 있지 않은 속성을 삭제하고자 하면 에러를 발생시킨다.

 

print(person.height)
delattr(person, 'height') ## height 속성 삭제
print(person.height)

 

delattr


댓글


맨 위로