앞서, Python에서 OOP 프로그래밍을 하며 계속 벽에 부딪힌다고 얘길 했었다. 그 중 하나가 access modifier인 public, protected, private이 Python에 없는 점이다.
해당 modifier들은 없지만, 유사한 naming convention을 제공한다. 이름 앞에 ‘_'(underscore) 또는 ‘__'(double underscore)를 붙여주면 된다.
class BContactDB:
def __init__(self):
super().__init__()
self.__db_name: str = "test.db"
db_name에 ‘__’로 시작하도록 이름을 사용했고, 이 값을 클래스 외부에서 엑세스하면 attribute error가 발생하게 된다. ‘_'(underscore) 하나를 사용하면, private, 두개를 사용하면 protected처럼 사용할 수 있다.
클래스에 대해서도, 모듈안에서만 사용하고 싶을 때가 있다. 역시 클래스 이름앞에 ‘_'(underscore)를 붙여준다.
class _QueryType(Enum):
SELECT = 1
DELETE = 2
이렇게하면, 외부에서 import시 이름이 나타나지 않는다.
Python에서 OOP Programming을 하는게 상당히 생소하고 까다로워서 따로 정리를 하고싶었다. 그런데, 기본적인 내용들을 깔끔하게 정리한 사이트가 있어 소개한다.
https://stackabuse.com/object-oriented-programming-in-python/
기본적인 OOP 개념들에 해당하는 Python 내용들을 설명하고 있다. 이 글을 진작에 봤으면 조금은 고생을 덜했을거 같네.