RoBoLoG

[Python] 클래스나 객체 내의 보호(protected) 속성 본문

Study/Python

[Python] 클래스나 객체 내의 보호(protected) 속성

SKJun 2024. 1. 5. 09:47

 

파이썬에서 클래스나 객체 내의 보호(protected) 속성은 일반적으로 언더스코어(_) 하나로 시작하는 이름을 사용하여 정의합니다. 이러한 네이밍 컨벤션은 해당 속성이 클래스 내부와 서브클래스에서만 사용될 것임을 나타내며, 외부에서의 직접적인 접근을 피하기 위한 것입니다. 다음은 보호 속성을 사용하는 간단한 클래스의 예시입니다.

 

class Car:
    def __init__(self, make, model):
        self._make = make  # 보호 속성
        self._model = model  # 보호 속성

    def describe_car(self):
        return f"This is a {self._make} {self._model}."

# 서브클래스 예시
class ElectricCar(Car):
    def __init__(self, make, model, battery_size):
        super().__init__(make, model)
        self._battery_size = battery_size  # 보호 속성

    def describe_battery(self):
        return f"This car has a {self._battery_size}-kWh battery."

# 객체 생성 및 사용
my_car = ElectricCar('Tesla', 'Model S', 75)
print(my_car.describe_car())
print(my_car.describe_battery())

# 보호 속성에 접근 (가능하지만 권장되지 않음)
print(my_car._make)  # Tesla

 

 

이 예시에서 Car 클래스는 makemodel이라는 두 개의 보호 속성을 가지고 있습니다. ElectricCar 클래스는 Car의 서브클래스이며, 추가적인 보호 속성인 battery_size를 가집니다. 이러한 보호 속성들은 클래스 내부와 상속받은 클래스에서 자유롭게 사용할 수 있지만, 클래스 외부에서는 사용을 자제해야 합니다. 그럼에도 불구하고, 파이썬은 강제적인 접근 제한을 하지 않기 때문에, 외부에서 이러한 속성에 접근하는 것이 기술적으로 가능합니다. 그러나 이는 일반적인 객체 지향 프로그래밍의 원칙에 어긋납니다.

728x90
반응형