본문 바로가기
programming/Python

파이썬 클래스 객체 변수 프로퍼티 삭제하기 Delete Python class object property

by 개코 - 개발과 코딩 2021. 11. 9.

파이썬 클래스는 유연하다. 초기화하여 프로퍼티를 사용할 수 있지만, 불필요한 경우 삭제할 수 있다. 유연한 데이터 가공을 위해서도 필요하겠지만, 파이썬 프로그램이 동작할 때 메모리관리를 위한 목적도 있다. 지금과 같이 하드웨어의 성능이 높아진 경우 상관이 없지만 파이썬이 처음 나온 과거에는 메모리관리는 개발자에게 항상 이슈였다.

파이썬 클래스 객체 변수 삭제하기
Delete Python class object property

파이썬 클래스를 사용하다 보면 필요없는 변수를 삭제할 필요가 있다.

프로그램이 없데이트되면서 클래스 변수의 필요가 없어질 수도 있고,

클래스 변수의 이름의 수정이나 또는 데이터 구조체의 변경등의 사례가 있을 수 있다.

상황은 많다.

클래스 변수 프로퍼티 삭제

클래스 변수인 프로퍼티를 삭제하는 것은 프로그램의 동작에 문제를 야기할 수 있다.

그렇기에 보통 사용할 프러퍼티를 먼저 추가하고 삭제할 것은 나중에 삭제한다.

하지만 파이썬에서 굳이 프로퍼티를 삭제하는 기능을 추가한 이유는 뭘까?

프로그램 동작의 유연성을 높이고 데이터 구조체의 용량 낭비를 방지하기 위함 아닐까?

파이썬을 만든 사람의 홈페이지를 가면 알 수 있다.

불편함과 귀찮음은 싫다고 말이다.

어쨌든 이유가 있으니 프로퍼티가 삭제될 수 있도록 한 것이겠다.

삭제 방법

클래스 변수인 프로퍼티를 삭제하기 위해서는 del 키워드를 사용한다.

파이썬에서 변수나 배열, 컬렉션에서 특정 값을 삭제할 때도 del 키워드를 사용되기도 한다.

방법은 아래와 같다.

class PythonClass : #-{

    def __init__(this, val) : #-{
        this.property = val
    #-}

#-}

del PythonClass.property

샘플 코드

위의 코드를 참고하여 실제로 코드를 만들어 본다.

이전에 사용했던 코드를 계속 사용할 것이다.

여러가지로 삭제를 해보자.

print('----------')

#- 클래스부분
class ClsMbtiTest : #-{

    def __init__(this, name, mbti, avengers) : #-{
        this.name = name
        this.mbti = mbti
        this.avengers = avengers
    #-}

    def fnIdolInfo(mbti) : #-{

        print("---- MBTI 정보 ----")
        print("검사자 이름", type(mbti.name), mbti.name)
        print("MBTI 결과", type(mbti.mbti), mbti.mbti)
        
        if(hasattr(mbti, "avengers")) :
            print("비슷한 어벤져스", type(mbti.avengers), mbti.avengers)

    #-}

#-}

idol1 = ClsMbtiTest("크리스 에반스", "ISFJ", "캡틴 아메리카");
del idol1.avengers 
idol1.fnIdolInfo()

print('----------')

idol2 = ClsMbtiTest("스칼렛 요한슨", "ISTP", "블랙 위도우");
del idol2.avengers
idol2.fnIdolInfo()

print('----------')

idol3 = ClsMbtiTest("크리스 햄스워스", "ESTJ", "토르");
del idol3.avengers
idol3.fnIdolInfo()

print('----------')

idol4 = ClsMbtiTest("로버트 다우니 주니어", "ENTP", "아이언맨");
del idol4.avengers
idol4.fnIdolInfo()

print('----------')

코드를 보면 별거 없다.

del 키워드를 사용하여 클래스 변수인 프로퍼티를 삭제하고 있다.

함수를 통해 클래스에 입력된 값을 출력할 때 프로퍼티가 존재하는지 확인하기 위해 hasattr 메서드를 사용하였다.

결과화면을 보자.

특정 프로퍼티가 삭제되어 나오는 것을 확인할 수 있다.

 

반응형

댓글