Guest User

Untitled

a guest
Jan 18th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. # 프로퍼티를 이용한 getter/setter
  2.  
  3. 마지막 라인에서 두 메서드를 name이라는 속성의 프로퍼티로 정의한다. property()의 첫번째 인자는 getter 메서드, 두 번째 인자는 seetter 메서드인다.
  4.  
  5. ```python
  6. class Duck():
  7. def __init(self, input_name):
  8. self.hidden_name = input_name
  9.  
  10. def get_name(self):
  11. print('inside the getter')
  12. return self.hidden_name
  13.  
  14. def set_name(self, input_name):
  15. print('inside the setter')
  16. self.hidden_name = input_name
  17.  
  18. name = property(get_name, set_name)
  19. ```
  20.  
  21. # 데커레이터를 이용한 getter/setter
  22.  
  23. - getter 메서드 앞에 @property 데커레이터를 쓴다.
  24. - setter 메서드 앞에 @name.setter 데커레이터를 쓴다.
  25.  
  26. ```python
  27. class Duck():
  28. def __init(self, input_name):
  29. self.hidden_name = input_name
  30.  
  31. @property
  32. def name(self):
  33. print('inside the getter')
  34. return self.hidden_name
  35. @name.setter
  36. def name(self, input_name):
  37. print('inside the setter')
  38. self.hidden_name = input_name
  39. ```
  40.  
  41. 또한 프로퍼티는 계산된 값을 참조할 수 있다.
  42.  
  43. ```python
  44. class Circle():
  45. def __init__(self, radius):
  46. self.radius = radius
  47. @property
  48. def diameter(self):
  49. return 2 * self.radius
  50. ```
  51. ```
  52. c = Circle(5)
  53. c.radius # 5
  54. c.diameter # 10
  55. ```
  56.  
  57. 속성에 대한 setter 프로퍼티를 명시하지 않으면 외부로부터 이 속성을 설정할 수 없다.
  58. ```
  59. c.diameter = 20 # error!
  60. ```
Add Comment
Please, Sign In to add comment