Python(파이썬) - 객체와 변수 알아보기




    이번 포스팅에서는 객체와 변수의 부분의 대해서 알아보겠습니다


    관련글 :


    Python(파이썬) - 객체(Object) - http://server-talk.tistory.com/210


    Python(파이썬) - 객체제작 - http://server-talk.tistory.com/212


    Python(파이썬) - Class(클레스)와 생성자 - http://server-talk.tistory.com/211


    Python(파이썬) - 인스턴스 변수와 메서드 - http://server-talk.tistory.com/213


    Python(파이썬) - 상속 - http://server-talk.tistory.com/214


    Python(파이썬) - 클래스 메서드 - http://server-talk.tistory.com/216





     Python(파이썬) - 객체와 변수의 접근관계



    파이썬에서는 기본적으로 객체의 변수의 접근이 허용되어 있습니다

    먼저 코드를 통해서 인스턴스 변수의 접근 관계를 알아보도록 하겠습니다



    class Data(object):
        def __init__(self, v):
            self.value = v
    
    C1 = Data(10)
    


    위 코드는 Data라는 클래스의 인스턴스화될 때 데이터(10) 를 전달 하며, 전달된 데이터를 value(인스턴스 변수)의 전달하는 코드입니다




    class Data(object):
        def __init__(self, v):
            self.value = v
    
    C1 = Data(10)
    print(C1.value)
    




    이번에는 Data 클래스의 전달한 매개변수를 C1의 소속되어 있는 인스턴스 변수를 출력하는 코드입니다

    즉 C1의 소속되어 있는 인스턴스 변수를 읽을 것입니다




    class Data(object):
        def __init__(self, v):
            self.value = v
    
    C1 = Data(10)
    print(C1.value)
    C1.value = 20
    print(C1.value)
    



    위 코드릴 보시면 이번에는 C1의 소속되어 있는 인스턴스 변수에 데이터(20) 직접 쓴 것을 확인하실 수 있습니다







     Python(파이썬) - 객체의 변수 접근막기


    위에서 객체의 외부에서 객체 안의 변수의 접근 방법(읽고, 쓰기)의 대해 알아보았는데요

    그렇다면 만든 객체는 중요한 객체의 여서 객체 안에 데이터를 수정하면 되지 않게 하는 경우도 있을 수 있을 것입니다

    이러한 경우의 객체 외부에서 객체의 변수의 접근을 하지 못하게 하는 방법을 알아보겠습니다




    class Data(object):
        def __init__(self, v):
            self.__value = v
    
    C1 = Data(10)
    print(C1.__value)
    



    위 코드와 출력내용의 에러가 발생하는 것을 보실 수 있습니다 바로 __(언더바 2개) 를 객체 안에 변수로 넣어주시면 되는 것입니다

    그리하여 인스턴스 밖에서는 접근하는 것이 금지되는 것입니다



    그러나 객체의 메서드 안에서는 접근이 가능합니다




    class Data(object):
        def __init__(self, v):
            self.__value = v
    
        def show(self):
            print(self.__value)
    
    C1 = Data(10)
    C1.show()
    



    위 코드에서의 Data 클래스 안에 show 메서드를 호출하면 출력 함수를 이용한 인스턴스 변수를 출력하는 코드를 추가하였으며, 실행 결과를 보시면 인스턴스 변수의 데이터를 확인할 수 있는 것입니다

    객체 안의 메서드를 이용하여 인스턴스 변수의 접근하실 수 있는 것입니다



    Posted by Server-talk 서버이야기