클래스 속성을 private으로 설정하는 방법은 무엇인가요?
- 속성 이름 앞에 언더스코어(_)를 붙이기: 이 방법은 일반적으로 사용되는 방법으로, 속성의 이름 앞에 언더스코어를 붙임으로써 해당 속성을 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으로 표시되어 권장되지는 않습니다.
- @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으로 설정하는데 사용할 수 있습니다.
참고: