Python 접근 제한자 (Access Modifier)

CODEDRAGON Development/Python

반응형

 

 

 

 

Python 접근 제한자 (Access Modifier)

·       Python은 다른 언어에서 흔히 사용하는 public, protected, private 등의 접근 제한자 (Access Modifier)를 갖지 않습니다.

·       Python 클래스는 기본적으로 모든 멤버가 public 됩니다.

·       Python 코딩 관례(Convention)상 내부적으로만 사용하는 변수 혹은 메서드는 그 이름 앞에 하나의 밑줄 하나(_) 을 붙입니다. 하지만 이는 코딩 관례에 따른 것일 뿐 실제 밑줄 하나를 사용한 멤버도 public 이므로 필요하면 외부에서 엑세스할 수 있습니다.

·       특정 변수명이나 메서드를 private으로 만들어야 한다면 두개의 밑줄(__)을 이름 앞에 붙이면 됩니다.

 

def __init__(self, width, height):

    self.width = width

    self.height = height

 

    # private 변수 __size

    self.__size = width * height

 

# private 메서드

def __internalFunc(self):

    pass

 

 

구분

선언

설명

self.width

-

·       public

·       외부에서 접근 가능

self._width

밑줄 하나(_)

·       public

·       내부 사용 용도로 표시 (protected)

·       외부에서 접근 가능

self.__width

두개의 밑줄(__)

·       private

·       외부에서 접근 불가능

·       외부접근시 AttributeError 발생

 

 

private 멤버를 외부에서 접근할 경우 Error 발생합니다.

 AttributeError: 'Xxxxxx' object has no attribute '__xxxxx'