without haste but without rest

파이썬 필드 밑줄의 의미와 프로퍼티 본문

ProgrammingLanguage/Python

파이썬 필드 밑줄의 의미와 프로퍼티

JinungKim 2022. 2. 4. 09:53
파이썬 클린코드

 

파이썬은 프로퍼티가 없다. private, protected를 강제할 수는 없지만 밑줄 하나를 통해 이를 관습적으로 사용한다.

밑줄을 두 개 쓰면 외부에 감출 수는 있지만, 맹글링을 통해 전혀 다른 이름을 생성하므로 주의가 필요하다.

class Connector:
    def __init__(self, source):
        self.source = source
        self._timeout = 60

위 클래스에서 source를 파라미터로 받고 timeout은 self._timeout 속성은 밑줄을 추가해서 프라이빗한 필드임을 명시했다. 

다만 외부에서 접근은 가능하다. 

 

class Connector:
    def __init__(self, source):
        self.source = source
        self.__timeout = 60

    def connect(self):
        print("Connecting with {}s".format(self.__timeout))


conn = Connector("postgresql://localhost")
print(vars(conn)_
print(conn._Connector__timeout)

__timeout 속성에 접근하려면 위처럼 접근을 해야만 한다.

이는 여러 번 확장되는 클래스의 메서드를 이름 충돌 없이 오버라이드하기 위해 만들어진 것으로 private을 위한 용도가 아니다.


 

 

(변경은 getter, setter 함수 활용... 책이 볼륨은 작은데 읽기가 쉽지 않다. 틈날때 천천히 읽으면서 내용 추가)

'ProgrammingLanguage > Python' 카테고리의 다른 글

Iterable vs sequence  (0) 2022.02.15
pyenv for macOS  (0) 2022.02.10
[Python3] 데코레이터, 클로저  (0) 2021.10.19
[Python3] 파이썬 3.10 업데이트 내용  (0) 2021.10.19
[python] 인터프리터 경로 출력  (0) 2021.10.17
Comments