카테고리 없음
python object 접근제어
YUM
2021. 5. 19. 11:03
Public : name : object 외부에서 접근 허용
Protected : _name : object 외부에서 접근은 가능하나 권장하지 않음
Private : __name : object 외부에서 접근 불가
*_ClassName__PrivateName 의 형태로 private 변수에 접근 가능, 부모클래스와 서브클래스 내 변수 구별
class A :
def __init__(self):
self.public_name = 'public'
self._protected_name = 'protected'
self.__private_name = 'private'
def print_vars(self):
print(self.__private_name)
a = A()
print(a.public_name) #출력 : public
print(a._protected_name) #출력 : protected
a.print_vars() #출력 : private (메소드를 통한 내부 접근은 허용)
print(a._A__private_name) #출력 : private (클래스 생성자에 있는 private 변수에 접근 가능)
print(a.__private_name) #error 발생
속성충돌방지 : private 변수는 같은 이름을 가진 여러 class 내 변수들을 구분하는데도 사용할 수 있다.
class Parent_class :
def __init__(self) :
self.__name = 'parent class'
def get(self):
return self.__name
class Sub_class(Parent_class) : #Parent_class를 상속받은 Sub_class
def __init__(self) :
super().__init__() # 부모 클래스의 init 함수 호출을 위한 코드
self._name = 'sub class'
s = Sub_class()
print(s.get()) #출력 : 'parent class'
print(s._name) #출력 : 'sub class'
같은 변수 명인 name에 대해서 부모 클래스 내 변수와 자식 클래스 내 변수를 다르게 처리하는 것을 볼 수 있다.