Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 프로퍼티를 이용한 getter/setter
- 마지막 라인에서 두 메서드를 name이라는 속성의 프로퍼티로 정의한다. property()의 첫번째 인자는 getter 메서드, 두 번째 인자는 seetter 메서드인다.
- ```python
- class Duck():
- def __init(self, input_name):
- self.hidden_name = input_name
- def get_name(self):
- print('inside the getter')
- return self.hidden_name
- def set_name(self, input_name):
- print('inside the setter')
- self.hidden_name = input_name
- name = property(get_name, set_name)
- ```
- # 데커레이터를 이용한 getter/setter
- - getter 메서드 앞에 @property 데커레이터를 쓴다.
- - setter 메서드 앞에 @name.setter 데커레이터를 쓴다.
- ```python
- class Duck():
- def __init(self, input_name):
- self.hidden_name = input_name
- @property
- def name(self):
- print('inside the getter')
- return self.hidden_name
- @name.setter
- def name(self, input_name):
- print('inside the setter')
- self.hidden_name = input_name
- ```
- 또한 프로퍼티는 계산된 값을 참조할 수 있다.
- ```python
- class Circle():
- def __init__(self, radius):
- self.radius = radius
- @property
- def diameter(self):
- return 2 * self.radius
- ```
- ```
- c = Circle(5)
- c.radius # 5
- c.diameter # 10
- ```
- 속성에 대한 setter 프로퍼티를 명시하지 않으면 외부로부터 이 속성을 설정할 수 없다.
- ```
- c.diameter = 20 # error!
- ```
Add Comment
Please, Sign In to add comment