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. 데이터를 다루는 방식이 다르다.