[Python] 파이썬의 접근제어자(public, private) 와 접근자(get)와 생성자(set)

[Python] 파이썬의 접근제어자(public, private) 와 접근자(get)와 생성자(set)

접근제어자 : 접근의 범위를 설정

공개/비공개 속성
public : 클래스 안,밖 모두 접근 기능
__변수명__, 변수명
__메서드명__, 메서드명

private : 클래스 내부에서만 접근 가능
__변수명, __메서드
private 객체를 생성할 때 초기화는 가능하다.

접근자와 생성자 : private 접근이 불가능하기 때문에 별도의 메서드가 필요하다. 접근자는 (getter), 생성자는 (setter) 라고 부른다. 접근자(getter)는 인스턴스의 값을 반환한다는 의미
생성자(setter)는 인스턴스의 값을 변경한다는 의미

protected : 해당 클래스와 그 하위(자식클래스)에 접근이 가능하다. 자식클래스의 객체를 생성한다.
_변수명


#security.py
#id, pw 저장

class Id:
    def __init__(self,id1,pw):
        self.__pw = pw #private : 정보 은닉
        self.id1 = id1

    def info(self):
        print(self.__pw)
        print(self.id1)

    def get(self): #getter
        return self.__pw

    def set(self,p): #setter
        self.__pw = p

#main()
A = Id('ID',1234)
#main직접 호출시 접근이 불가능하다.
#print(A.pw) #Error 발생, 클래스 밖에서는 접근이 불가능하기 때문이다. (AttributeError)
A.info()

A.set(1111) #set 메서드를 통해 변경
print(A.get()) #get 메서드를 통해 변경된 값 반환

#security_2.py
class Acc:
    def __init__(self):
        publicVar = "public"
        __privateVar = "Not_public"
        self.__money = 100000
    def __privateMethod(self):
        print("Not_public_Method")
A = Acc()
A.__privateMethod()
try:
    print(Acc.publicVar)
    print(Acc.__privateVar)

except AttributeError:
    print('Not Access')

댓글