파이썬에서의 Private 과 protected 변수

__x = 3 # private

_x  = 3 # protected 

파이썬에서는 변수명 앞에 언더바 한개는 protected 입니다. 언더바 두개는 private 입니다. 메소드들은 기본적으로 전부 퍼블릭입니다.

그렇지만 private은 우리가 아는 것처럼 접근이 불가능 한게 맞는데, protected는 굳이 상속을 받지 않더라도 접근이 가능합니다. 그렇게 엄격한 편은 아닙니다.

클래스에서의 private 변수 접근 법과 매직 메소드

class Vector2d:
    typecode = 'd'
    
    def __init__(self, x, y, z):
        self.__x = float(x)
        self.__y = float(y)
        self._z = float(z)
        self.__zyz_list = [x,y,z]
        
    def __iter__(self):
        return (i for i in (self.__x,self.__y, self.__z))
    @property
    def x(self):
        return self.__x
    @property
    def y(self):
        return self.__y
    @property
    def z(self):
        return self._z
    def __len__(self):
        return len(self.__zyz_list)
    
test = Vector2d(3.0, 4.0, 5.0)

private 변수는 직접적으로 변수 메소드에 접근할수 없습니다. 그래서 property를 이용해서 값을 가지고 와야합니다.

다른 방법으로는 매직 메서드 [ __ len__() ] 을 이용해서 가지고 오는 방법도 있습니다 .