python - 접근제한

nahye·2021년 5월 13일
0

접근제한

접근제한

  • 파이썬은 자바나 C++처럼 명시적으로 public, protected, private과 사용하지 않는 대신 밑줄(_)을 사용해서 접근제한을

class Car:
    def __init__(self):
        self.price = 2000
        self._speed = 0 # 밑줄 하나는 비공개모드(외부에 직접 접근 불가함)
        self.__color = "red"

if __name__ == "__main__":
    my_car = Car() # 외부에서 객체 만들어 접근하는 것
    print(my_car.price)
    print(my_car._speed) # 강제로 시도하면 비공개모드라도 접근가능
    print(my_car.__color)

  • 접근 속성이 없다고 나오는 이유는?

    밑줄 두 개짜리는 내부적으로 객체를 변경해버림
    그래서 정확한 이름을 알 수 없음
    그래서 외부(11번째 코드)에서 '__color' 이름을 사용했을 때 속성이 없다라고 나옴

  • 객체의 경우에만 접근제한자를 사용함.

  • 파이썬 같은 경우 클래스 자체엔 접근제한이 없다.

  • 파이썬은 메소드만 접근제한되고, 클래스를 선언하면 다 공개(클래스에는 별도의 기준이 없음)

class Car:
    def __init__(self):
        self.price = 2000
        self._speed = 0
        self.__color = "red"
    def getColor(self):
        return self.__color
    def setColor(self, color):
        self.__color = color

if __name__ == "__main__":
    my_car = Car()
    print(my_car.price)
    print(my_car._speed)
    print(my_car.getColor())
    my_car.setColor("blue")
    print(my_car.getColor())

밑줄 두개를 가져오기 위해선 get method와 set method가 둘 다 필요하다.

파이썬 장점
1. 코드 직관적
2. 오픈소스 많음
3. 데이터를 다루는 방식이 다르다.

profile
Slow and steady wins the race

0개의 댓글