본문 바로가기

TIL

23.04.21 TIL

21일에 한 것

페어프로그래밍

장고 강의 4주차 수강

세션로그인 vs 토큰 로그인 수강(링크)

 

새로 배운 것: 오브젝트의 필드참조와 모델 클래스의 필드 참조

DRF를 이용해 좋아요 기능을 구현하는 내용을 따라가던 중 위와같은 오류가 발생했다. 

 

문제의 발생 원인은 위와같이 object의 속성값을 참조하는것이 아니라, 오타로 인해 모델 클래스의 필드 속성을 참조하고 있었던 것이었다.

단순한 오타로 인한 오류이지만 궁금했다.

모델 클래스의 필드를 참조하면 뭐가 튀어나올까? : Descriptor

위와같이 참조하면, descriptor 객체가 나온다. 역참조가 아닌 일반적인 필드의 경우 해당 객체의 fields 속성에 접근해서 null, blank와 같은 속성에 접근할 수 있다.

descriptor 클래스는 객체 속성의 삭제, 조회, 저장을 사용자 정의할 수 있게 해주는 파이썬의 핵심기능으로 __get__(), __set__(), __delete__() 셋중 하나라도 메소드로 정의되어있는 클래스가 다른 클래스의 정적 속성으로 들어가 있으면 descriptor라고 불린다.

그러니까 우리가 모델 객체들에게 접근할 때 저 descriptor들에 정의된 새로운 조회,저장,삭제 메소드들이 실행되는 것이다. 이런 descriptor들은 유효성 검사등에 사용될 수 있다.

class Ten:
    def __get__(self, obj, objtype=None):
        return 10
        
        
class A:
    x = 5  # Regular class attribute
    y = Ten()  # Descriptor instance


a = A()
print(a.x)  # 5
print(a.y)  # 10

 

레퍼런스

https://docs.python.org/ko/3/glossary.html#term-descriptor

 

Glossary

>>>, The default Python prompt of the interactive shell. Often seen for code examples which can be executed interactively in the interpreter.,,..., Can refer to:- The default Python prompt of the i...

docs.python.org

https://blog.naver.com/codeitofficial/221701646124

 

[코드잇] 쉽게 배우는 파이썬 문법 - 프로퍼티(Property) 3편

안녕하세요, 온라인 코딩 스쿨 코드잇입니다. 오늘은 지난 시간에 이어 파이썬의 프로퍼티에 대해서 알려드...

blog.naver.com

 

'TIL' 카테고리의 다른 글

23.04.25 TIL - defaultdict, lambda, callable  (0) 2023.04.25
23.04.24 TIL - DRF: serialize, renderer, response  (0) 2023.04.24
23.04.20 TIL (JSON과 JS objects)  (0) 2023.04.20
23.04.19 TIL(CORS)  (0) 2023.04.20
23.04.18 TIL (장고에서 PUT 쓰기)  (0) 2023.04.19