ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 접근 제어자
    언어/파이썬 & 장고 2016. 10. 7. 14:04

    다른언어와 달리 private, public 등의 접근제어자 키워드가 존재하지 않고 작명법(naming)으로 접근제어를 합니다. public, private, protected에 대한 규칙은 다음과 같습니다.

    publicprivateprotected

    아무 밑줄이 접두사에 없어야 함

    ex) num

    두개의 밑줄 __이 접두사여야 함

    ex) __num

    한 개의 밑줄 _이 접두사여야 함

    ex) _num


    접미사는 밑줄이 한 개까지만 허용

    ex) __num_


    접미사의 밑줄이 두 개 이상이면 public으로 간주

    ex) __num__


    예제

    # -*- coding: utf-8 -*-
    class HasPrivate:
    def __init__(self):
    self.public = "PUBLIC"
    self.__private = "PRIVATE"
    self._protected = "PROTECTED"
    def print_test(self):
    print(self.public)
    print(self.__private)
    print(self._protected)

    obj = HasPrivate()
    obj.print_test() # HasPrivate의 print_test() 함수는 같은 클래스의 멤버이기 때문에 public, __private 두 데이터 속성에 자유롭게 접근 가능
    # 결과
    # PUBLIC
    # PRIVATE
    print(obj.public)
    # 결과
    # PUBLIC
    print(obj._protected)
    # 결과
    # PROTECTED
    print(obj.__private) # HasPrivate 객체 외부에서는 __private가 보이지 않기 때문에 접근할 수 없음
    # AttributeError: HasPrivate instance has no attribute '__private'


    댓글