클래스의 바깥에서 접근할 수 없고 클래스 안에서만 사용할 수 있다.
class Person:
def __init__(self, name, age, address, wallet):
self.name = name
self.age = age
self.address = address
self.__wallet = wallet
위와 같은 클래스가 있을 때 name, age, address
는 클래스의 바깥에서 접근할 수 있는 공개 속성이지만 __wallet
은 클래스 바깥에서 접근할 경우 에러가 발생한다.
이렇게 밑줄 두개 __ 를 붙인 속성을 비공개 속성이라고한다.
이는 클래스 바깥에서 제어하지 않고 클래스 내에서 메서드에 의해서만 변경할 수 있다.
속성뿐만 아니라 메서드도 __로 시작하는 비공개 메서드를 만들 수 있다.
class Person:
def __greeting(self):
print('Hello')
def hello(self):
self.__greeting()
james = Person()
james.__greeting()
클래스 안에서는 비공개 메서드를 호출할 수 있으나, 밖에서는 호출할 수 없다.