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
- Depth estimation
- nlp
- FGVC
- ML
- nerf
- math
- computervision
- 3d
- web
- FineGrained
- REACT
- Front
- Torch
- 자료구조
- 알고리즘
- pytorch
- CV
- Meta Learning
- algorithm
- cs
- classification
- dl
- clean code
- 머신러닝
- SSL
- Vision
- GAN
- PRML
- Python
- 딥러닝
- 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