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