programmer-blog

[Python]비공개 속성,메서드에 대해서 본문

Python

[Python]비공개 속성,메서드에 대해서

frogrammer 2020. 5. 24. 15:42

private attribute
private method

 

클래스 내부에서만 접근 할 수 있는 속성을 가르켜 비공개 메서드라고 한다.
속성 이름 앞에 __을 붙이면 비공개 속성이 된다.

class Person:
    def __init__(self,name,wallet):
        self.name = name
        self.wallet = wallet
    def money(self):
        print(self.wallet)
bill = Person('bill','10000')
bill.money()

비공개 속성은 이렇게 클래스 내부 함수를 통해서만 접근 할 수 있다.

bill.__wallet # AttributeError: 'Person' object has no attribute '__wallet'

만약 밖에서 접근하려고 하면 에러 메세지가 뜬다. 밖에서는 __wallet 속성이 없는 것 처럼 작동한다.

 

비공개 메서드를 만드는 방법 비공개 속성을 만드는 방법과 같다. 함수이름 앞에 언더바(_)를 두개 입력하면 된다.

class Person:
    def __init__(self,name,wallet):
        self.name = name
        self.wallet = wallet
    def __name(self): #비공개 메서드. 클래스 내부에서만 접근 할 수 있다.
        print(self.name)
    def money(self):
        self.__name()
        print(self.wallet)
bill = Person('bill','10000')
bill.money()

비공개 메서드도 클래스 내부에서만 접근 할 수 있다.

bill.__name() #AttributeError: 'Person' object has no attribute '__name'

외부에서 접근하려고하면 비공개 속성과 마찬가지로 에러가 난다.