클래스 속성을 private으로 설정하는 방법은 무엇인가요?
  1. 속성 이름 앞에 언더스코어(_)를 붙이기: 이 방법은 일반적으로 사용되는 방법으로, 속성의 이름 앞에 언더스코어를 붙임으로써 해당 속성을 private으로 표시합니다. 이렇게 하면 외부에서 직접 속성에 접근할 수 없고, 클래스 내에서만 사용할 수 있게 됩니다.
class ExampleClass:
    def __init__(self):
        self._private_attr = 1  # private attribute

    def _private_method(self):
        print("This is a private method")

example = ExampleClass()
print(example._private_attr)  # 접근은 가능하지만, private으로 표시되어 권장되지는 않습니다.
example._private_method()  # 접근은 가능하지만, private으로 표시되어 권장되지는 않습니다.
  1. @property 데코레이터 사용하기: @property 데코레이터를 사용하면 메서드를 속성으로 접근할 수 있도록 만들어줍니다. 이 경우, 속성 이름 앞에 언더스코어를 붙일 필요가 없습니다.
class ExampleClass:
    def __init__(self):
        self._private_attr = 1  # private attribute

    @property
    def private_attr(self):
        return self._private_attr

    @private_attr.setter
    def private_attr(self, value):
        if value >= 0:
            self._private_attr = value
        else:
            raise ValueError("Value must be greater than or equal to 0")

example = ExampleClass()
print(example.private_attr)  # getter 메서드처럼 사용 가능
example.private_attr = 10  # setter 메서드처럼 사용 가능
print(example.private_attr)

두 가지 방법 중에서는 첫 번째 방법이 일반적으로 더 많이 사용되지만, 두 방법 모두 클래스의 속성을 private으로 설정하는데 사용할 수 있습니다.

참고: