반응형
1. 단일 밑줄 (_) 사용
단일 밑줄을 사용하면 변수나 메서드가 "protected"임을 나타냅니다. 이는 해당 클래스와 서브클래스에서만 접근할 수 있음을 의미합니다. 그러나 이는 강제적인 제한이 아니며, 여전히 외부에서 접근이 가능합니다. 이는 주로 개발자에게 해당 변수가 내부적으로 사용된다는 신호를 주기 위한 것입니다.
class MyClass:
def __init__(self):
self._protected_var = "This is a protected variable"
def _protected_method(self):
return "This is a protected method"
obj = MyClass()
print(obj._protected_var) # 접근 가능
print(obj._protected_method()) # 접근 가능
2. 이중 밑줄 (__) 사용
이중 밑줄을 사용하면 변수나 메서드가 "private"임을 나타냅니다. 이는 이름 맹글링(name mangling)을 통해 클래스 외부에서 접근할 수 없도록 합니다. 변수 이름이 클래스 이름과 결합되어 내부적으로 변경되기 때문에 외부에서 직접 접근이 불가능합니다.
class MyClass:
def __init__(self):
self.__private_var = "This is a private variable"
def __private_method(self):
return "This is a private method"
def get_private_var(self):
return self.__private_var
obj = MyClass()
print(obj.get_private_var()) # 접근 가능
print(obj.__private_var) # 접근 불가, AttributeError 발생
print(obj.__private_method()) # 접근 불가, AttributeError 발생
3. 이름 맹글링(Name Mangling)
이중 밑줄을 사용하면 파이썬은 변수 이름을 내부적으로 변경하여 접근을 제한합니다. 예를 들어, __private_var는 _MyClass__private_var로 변경됩니다. 이를 통해 외부에서 접근을 어렵게 만듭니다.
class MyClass:
def __init__(self):
self.__private_var = "This is a private variable"
obj = MyClass()
print(obj._MyClass__private_var) # 접근 가능, 하지만 권장되지 않음
이렇게 하면 클래스 내부 멤버 변수를 숨길 수 있습니다. 추가로 궁금한 점이 있으면 언제든지 물어보세요! 😊
반응형
'IT' 카테고리의 다른 글
파이썬 모듈, 패키지 사용 (0) | 2025.02.05 |
---|---|
파이썬 클래스 상속받고 재정의하기 (0) | 2025.02.05 |
파이썬 Object Class 정의 (0) | 2025.02.05 |
파이썬 클래스 정의하고 인스턴스 생성 (0) | 2025.02.05 |
파이썬 클래스(Class) 정의 (0) | 2025.02.05 |