Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- classification
- clean code
- FGVC
- dl
- ML
- FineGrained
- nerf
- Python
- PRML
- REACT
- CV
- 딥러닝
- cs
- Vision
- Torch
- GAN
- SSL
- computervision
- Depth estimation
- math
- 3d
- Front
- 머신러닝
- nlp
- algorithm
- Meta Learning
- web
- 자료구조
- 알고리즘
- pytorch
- Today
- Total
KalelPark's LAB
[ CLEAN CODE ] Clean Python, Property 활용하기 본문
Property
- 파이썬에는 내장함수로 property()와 데코레이터인 @Property가 존재합니다.
property()를 사용하면서 필드명을 사용하는 것처럼 메서드를 호출할 수 있습니다.
class Person:
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
def get_age(self):
return self._age
def set_age(self, age):
if age < 0:
raise ValueError("Invalid age")
self._age = age
age = property(get_age, set_age)
property() 함수의 첫 번째 인자로 getter 메서드를 두 번째 인자로 setter 메서드를 넘겨주면,
age라는 필드명을 활용해서 데이터에 접근 가능합니다.
클래스를 사용하는 측면에서는 일반 필드에 접근하는 것처럼 보이지만, 내부적으로 getter와 setter메서드가 호출됩니다.
@property()데코레이터를 사용하면, 코드를 더 간결하고, 읽기 편하게 작성할 수 있습니다.
class Person:
def __init__(self, first_name, last_name, age):
self.first_name = first_name
self.last_name = last_name
self.age = age
@property
def age(self):
return self._age
@age.setter
def age(self, age):
if age < 0:
raise ValueError("Invalid age")
self._age = age
기존의 getter 메서드에서는 @property 데코레이터를 선언하고, setter 메서드의 경우에는 @<필드명>.setter 데코레이터를 선언하고, 메서드 이름으로부터 set_을 삭제합니다.
참고
https://www.daleseo.com/python-property/
'Python > CLEAN CODE' 카테고리의 다른 글
[ CLEAN CODE ] Clean Python, Logging 활용하기 (0) | 2023.01.02 |
---|---|
[ CLEAN CODE ] Clean Python, Dictionary 활용하기 (0) | 2023.01.02 |
[ CLEAN CODE ] Clean Python, Argparse 유용하게 활용하기 (0) | 2022.12.30 |
[ CLEAN CODE ] Clean Python, __future__이란? (0) | 2022.12.28 |
[ CLEAN CODE ] Clean Python, Pickle이란? (0) | 2022.12.21 |
Comments