@property
python에서는 @property라는 decorator를 제공하는데,
해당 클래스의 객체 변수처럼 사용될 수 있게 하며, 캡슐화 목적으로 주로 사용된다.
property 코드 예시
class Profile:
def __init__(self, first_name:str, last_name:str):
self.first_name = first_name
self.last_name = last_name
@property
def full_name(self):
return self.first_name + self.last_name
profile = Profile("홍","길동")
print(profile.first_name) # "홍"
print(profile.last_name) # "길동"
print(profile.full_name) # "홍길동"
Django Models의 property
django models 에서도 @property를 사용 할 수 있으며, 사용시 해당 속성은 읽기 전용이 된다.
용도 : 읽기 전용이기 때문에 도메인에 대한 추가적인 비즈니스 로직을 위한 목적으로 사용하는 것도 적절!
흔히 말하는 getter/setter의 getter 와도 같은 역할을 한다.
class User:
email = models.EmailField(verbose_name="이메일", max_length=265, unique=True)
name = models.CharField(verbose_name="담당자 이름", max_length=10, blank=False)
@property
def service_name(self):
# The user is identified by their email address
return 'user_' + self.email
Django 에서의 setter 는?
+ setter는??) models 에서 setter 는 @<property>.setter 로 구현될 수 있지만
models (=데이터베이스 필드) 외의 속성을 설정할 필요가 없으므로 사용되지 않는 것이 일반적
'Python > Django' 카테고리의 다른 글
[Django, DB] haversine 두 지점의 거리 Django Func 사용하기 (0) | 2024.06.30 |
---|---|
[Django] Prefetch 에 대한 이해 (0) | 2024.05.19 |
[Django] Django Model - Table Field, Relationship (1) | 2023.02.07 |
[Django] 간단한 메일 전송 기능 구현 (by. Gmail ) (0) | 2022.11.18 |
[Django] Pagination 방법 비교 (Feat. Django, DRF) (0) | 2022.11.10 |