묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결코딩으로 학습하는 GoF의 디자인 패턴
Decorator 설정 방법 질문드립니다.
안녕하세요. 기선님 강의를 보고 토이 프로젝트에(Java/Spring) decorator 패턴을 적용하다 궁금한 점이 있어서 질문드립니다. 먼저 제가 생각하는 로직은 매 요청마다 CommantService의 정책이 변경되지 않고, booting 시 properties 값에 따라 enable되는 decorator가 정해지는 방식으로 만들고자 합니다. === 질문 실제 서비스에서 decorator 패턴 적용시 CommentService를 언제 어떤식으로 초기화를 해야할지 모르겠습니다. CommontServiceFactory를 싱글톤 패턴으로 만들어두고 CommontService를 필요로 하는 곳에 CommontServiceFactory를 di시키면 될까요? 아님 다른 방법으로 진행해야 할까요?
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
injectable 데코레이터 유무 차이
injectable 데코레이터가 없어도 문제없이 작동하는 것 처럼 보이는데.. 어째서 명시해야하는건가요? 그리고.. 서비스에 injectable 데코를 쓰면 모듈에 등록하라는 에러가 발생하는데 미들웨어는 써도 안써도 에러가 발생하지 않네요 따로 모듈에 적거나 하는게 아닌데두요
-
미해결가장 빠른 풀스택: 파이썬 백엔드와 웹기술 부트캠프 (flask/플라스크와 백엔드 기본) [풀스택 Part1-1]
안녕하세요 강의를 보다가 궁금한게 있어서 글 썻습니다!
6분~7분에 설명하신 인자가 있는 데코레이터를 설명해 주실때 def func (num) def outter_func(func) def inner_func ( ... ) 이 구조를 설명해주셨는데 제가 저런 파라미터를 사용한 데코레이터 사용한 예시가 궁금해서 flask에 있는 scaffold.py 를 확인해봤습니다! https://github.com/pallets/flask/blob/main/src/flask/scaffold.py scaffold 클래스내에 route 메소드는 위에 설명한 구조가 아닌 def route(self, ...) def decorator ( func) 이런 2중구조더라구요... 혹시 다른차이가 있나요? def route(self, rule: str, **options: t.Any) -> t.Callable: """Decorate a view function to register it with the given URL rule and options. Calls :meth:`add_url_rule`, which has more details about the implementation. :param rule: The URL rule string. :param options: Extra options passed to the :class:`~werkzeug.routing.Rule` object. """ def decorator(f: t.Callable) -> t.Callable: endpoint = options.pop("endpoint", None) self.add_url_rule(rule, endpoint, f, **options) return f return decorator
-
미해결Redux vs MobX (둘 다 배우자!)
@observer 데코레이터 사용 문의
old 브랜치의 redux-vs-mobx 의 7.mobx-react 의 App.jsx 를 보면 @observer 가 선언되어 있는데요 이부분을 제거하여도 동작은 똑같이 작동하는데 선언된 이유가 있을까요??
-
미해결작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지
데코레이터 관련(새로운 프로젝트에 적용)
안녕하세요. 강의듣고 난후 새로운 개인적 프로젝트 개발중입니다.(코린이 수준, 비전문 개발자라고 할까요. 코딩은 이번이 거의 처음입니다.) 강의는 accountsapp의 User를 기존 class를 이용하여(class AccountCreateView(CreateView):) 생성하였는데 저는 모델을 적용 class Prouser(models.Model) 하여 생성했습니다. (이메일 인증과정을 추가하느라...) 그리고 프로필 모델을 이렇게 만들었습니다. 그리고 데코레이터 는 강의중에 나오는 데로,,,아래처럼 했더니,,,작동이 잘안됩니다. 유저는 pk가 3인 vend01이라는 로그인 id소유자입니다. 물론 아직 프로필을 생성하지 않은 상태이구요,,, 그런데.... 다른 사람( pk=2)의 프로필 업데이트 페이지로 진입됩니다. 게다가... 만들지 않은 프로필의 주소로 진입시도하면.....아래처럼 나옵니다. 아무리 수정할 려고 여러 코드로 해보아도 해결이 되지 않습니다. 처음 만들어보는 프로젝트라 해결할 부분을 선생님 강의를 들으면서 잘 찾아가고 있는데 여기가 통 해결이 되질 않습니다. 무엇이 문제일런지요???? 그리고 추가로 pk관련 아래 이미지도 맞게 제가 정리한 것인지 검토부탁드립니다. ============================================================================================= 추신)))) 그리고 이 데코레이터 부분을 제대로 작성하고 나면 하나 해결해야 할 부분이 있을 것으로 생각되는데요... 가입유저에 level를 적용하여 customer와 vendor로 나누었습니다. 선생님 강의중에 한명이 두개이상의 프로필을 만들 수 있다고 하셔서, 여기저기 뒤져가며 코딩을 해봤는데 구현이 되질 않았습니다. 그래서 프로필 모델은 하나로 통째로 만들고 유저의 level에 따라 데코레이터를 적용하는 방식으로 해결하려고 구도를 잡았습니다. 그것을 구현하는 과정에 난항이 예상되고 있습니다. 실험삼아 만들어보는 다른 프로젝트에서 모델 하나의 유저에 level를 만들어서 데코레이터 방식은 적용을 해봤는데 잘되었습니다. 그러나 이번 만들어보는 프로젝트에서도 약간의 app들의 구조가 달라 잘 구현될 지 해봐야 알것같습니다. 안되면 그때 또 질문을 남기겠습니다.
-
미해결가장 빠른 풀스택: 파이썬 백엔드와 웹기술 부트캠프 (flask/플라스크와 백엔드 기본) [풀스택 Part1-1]
데코레이터 질문드립니다
위 함수에서 multiplier를 호출했을 때 return value의 type이 str도 될 수 있고 int도 될 수 있는데 그렇다면 이 경우엔 multiplier를 호출해도 type_checker 안의 if statement가 먼저 호출되기 때문에 return value의 type이 달라지는 거라고 이해했습니다. 그렇다면 이 경우에는 multiplier 함수 자체나 그 결과값을 다른 함수의 인자로 사용하는 것이 바람직하지 않겠죠? type이 다른 input value들이 들어가면 오류가 나기 쉬울테니까요? 항상 좋은 강의 감사드립니다.
-
해결됨우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)
데코레이터 미사용 샘플 문의 - 결과가 2개씩 나옵니다.
강사님 질문 있습니다. 아래처럼 코드를 사용해서 실행하니 결과가 2개씩 나오는데, 이유가 무엇인가요? # 데코레이터 실습 import time def perf_clock(func): def perf_clocked(*args): # 함수 시작 시간 st = time.perf_counter() result = func(*args) # 함수 종료 시간 계산 et = time.perf_counter() - st # 실행 함수명 name = func.__name__ # 함수 매개변수 arg_str = ', '.join(repr(arg) for arg in args) # 결과 출력 print('[%0.5fs] %s(%s) -> %r' % (et, name, arg_str, result)) return result return perf_clocked @perf_clock def time_func(seconds): time.sleep(seconds) @perf_clock def sum_func(*numbers): return sum(numbers) # 데코레이터 미사용 none_deco1 = perf_clock(time_func) none_deco2 = perf_clock(sum_func) # print(none_deco1, none_deco1.__code__.co_freevars) # print(none_deco2, none_deco2.__code__.co_freevars) print() print('-' * 40, 'Called None Decorator -> time_func') none_deco1(1.5) print() print('-' * 40, 'Called None Decorator -> sum_func') none_deco2(100, 150, 250, 300, 350) 결과는 아래와 같습니다. (env_craw) D:\workspace\Python>python decolate.py ---------------------------------------- Called None Decorator -> time_func [1.51387s] time_func(1.5) -> None [1.51407s] perf_clocked(1.5) -> None ---------------------------------------- Called None Decorator -> sum_func [0.00001s] sum_func(100, 150, 250, 300, 350) -> 1150 [0.00014s] perf_clocked(100, 150, 250, 300, 350) -> 1150