[Python]Property – Getter, Setter
Getter와 Setter에 대해 알아보자.
"""
Python Property(2) -- Getter, Setter
"""
# 예1 : Property 활용 Getter, Setter 작성
class SampleA:
def __init__(self):
self.x = 0
self.__y = 0
# Getter
@property
def y(self):
print('called getter')
return self.__y
# Setter
@y.setter
def y(self, value):
print('called setter')
self.__y = value
@y.deleter
def y(self):
del self.__y
a = SampleA()
a.x = 1
a.y = 2
print(f'a.x = {a.x}')
print(f'a.y = {a.y}')
"""
called setter
a.x = 1
called getter
a.y = 2
"""
# deleter
print(f'a.y = {dir(a)}')
del a.y
print(f'a.y = {dir(a)}')
"""
a.y = ['_SampleA__y', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'x', 'y']
a.y = ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'x', 'y']
"""
# 예2 : 유효성 검사 추가
class SampleB:
def __init__(self):
self.x = 0
self.__y = 0
# Getter
@property
def y(self):
return self.__y
# Setter
@y.setter
def y(self, value):
if value < 0:
raise ValueError("0보다 커야합니다.")
self.__y = value
@y.deleter
def y(self):
del self.__y
b = SampleB()
b.y = 10
# b.y = -10 예외발생
print(f'b.x = {b.x}')
print(f'b.y = {b.y}')
"""
b.x = 0
b.y = 10
"""
최신 댓글