[python] 상속 관계에 따른 접근 제어자의 활용
Python은 간결하고 읽기 쉬운 문법으로 유명한 프로그래밍 언어로, 객체 지향 프로그래밍을 지원합니다. 상속을 통해 부모 클래스가 갖고 있는 속성과 메서드를 자식 클래스가 물려받을 수 있는데, 이 때 각 속성과 메서드에 대한 접근 제어자를 활용하여 캡슐화를 할 수 있습니다.
1. 접근 제어자란?
접근 제어자는 클래스의 속성 또는 메서드에 대한 접근을 제한하거나 허용하는 역할을 합니다. 보통 네 가지 종류의 접근 제어자가 있으며, 이들은 아래와 같습니다.
- public: 어떠한 제한도 없이 모든 곳에서 접근이 가능합니다. Python에서는 언더스코어(_)가 없는 것이 public으로 간주됩니다.
- protected: 해당 클래스 자신과 해당 클래스를 상속받은 클래스에서만 접근이 가능합니다. Python에서는 속성이나 메서드 이름 앞에 언더스코어(_) 하나가 붙습니다.
- private: 해당 클래스 자신에서만 접근이 가능하며, 상속 관계에 있더라도 접근이 불가능합니다. Python에서는 언더스코어(_) 두 개가 속성이나 메서드 이름 앞에 붙습니다.
- static: 클래스 자체에서 접근이 가능한 경우로, 해당 클래스의 모든 인스턴스에서 공유됩니다.
2. 상속 관계에 따른 접근 제어자 활용 예시
아래 예제를 통해 각 접근 제어자의 활용을 살펴보겠습니다.
class Parent:
def __init__(self):
self.public_var = 5
self._protected_var = 10
self.__private_var = 15
class Child(Parent):
def __init__(self):
super().__init__()
print(self.public_var) # public_var에 접근 가능
print(self._protected_var) # protected_var에 접근 가능
print(self.__private_var) # Error! private_var에 접근 불가능
위 예제에서는 Parent
클래스의 속성들을 Child
클래스에서 상속받아 접근하는 방법을 보여줍니다. public_var
와 _protected_var
에 대한 접근은 정상적으로 가능하지만, __private_var
에 대한 접근은 에러를 발생시킵니다.
3. 결론
Python에서는 상속 관계에 따른 접근 제어자를 활용하여 부모 클래스의 속성과 메서드를 적절히 물려받고 활용할 수 있습니다. 적절한 접근 제어자를 활용하여 코드의 유지보수성과 안정성을 높일 수 있으며, 객체 지향 프로그래밍의 핵심 개념을 잘 이해하여 활용하는 것이 중요합니다.
위 내용은 Python 공식 문서와 Real Python 사이트의 기사를 참고하여 작성하였습니다.