ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ํŒŒ์ด์„ ์˜ isinstance ํ™œ์šฉํ•˜๊ธฐ
    Programming Language/Python 2021. 12. 29. 23:33

     

    ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป  Pythonicํ•˜๊ฒŒ ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ 

    Django REST ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ API response๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ renderer๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.
    JSend ํฌ๋งท์„ ๋”ฐ๋ฅผ ๊ฒƒ์ด๋ฏ€๋กœ, ์—๋Ÿฌ์ฝ”๋“œ๋“ค์— ๋Œ€ํ•˜์—ฌ ์ž‘์„ฑํ•ด์•ผ ํ•  json format์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

    JSend format

    400๋ฒˆ๋Œ€ ์—๋Ÿฌ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” client error๋“ค์— ๋Œ€ํ•œ format์„ ์ž‘์„ฑํ•˜๋ ค ํ•˜๋Š”๋ฐ.. 
    400์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ValidationError์™€ ๋‚˜๋จธ์ง€ 400๋ฒˆ๋Œ€ ์—๋Ÿฌ๋“ค์ด ๋ฐ˜ํ™˜ํ•˜๋Š” data์˜ type์ด ๋‹ฌ๋ž๋‹ค. 

    ValidationError
    PermissionDenied

     

    ์ฒ˜์Œ์—” ๋ฐ˜ํ™˜๋˜๋Š” ErrorDetail ๊ฐ์ฒด์˜ ๋ณ€์ˆ˜์ธ code(exceptionclass๋“ค์— ์ •์˜๋œ default_code๊ฐ’)๋ฅผ ๋ฝ‘์•„์™€์„œ
    400๋ฒˆ๋Œ€ ์—๋Ÿฌ๋ฅผ ๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆ„์—ˆ๋Š”๋ฐ, ํŠน์ • ์—๋Ÿฌ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด๋ ‡๊ฒŒ ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์˜ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์•˜๋‹ค.

     

    ๐Ÿš€  exceptions.py ํ•จ์ˆ˜๋ฅผ ์กฐ๊ธˆ ๋” ๋’ค์ ธ๋ณด์ž

    exceptions.py์— ์„ ์–ธ๋œ _get_code(data)ํ•จ์ˆ˜์— ์กด์žฌํ•˜๋˜ builtin method isinstance๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.
    data type์ด ๋‹ค๋ฅด๋‹ค๋ฉด type์— ๋”ฐ๋ผ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ ์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

     

    ๐Ÿ’ก ํŒŒ์ด์„ ์˜ built-in-method isinstance ์‚ฌ์šฉํ•˜๊ธฐ

    ๊ณต์‹ ๋„ํ๋จผํŠธ์˜ ์„ค๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    ํŒŒ์ด์„  ๊ณต์‹ ๋„ํ๋จผํŠธ

    instance์™€ ์ „๋‹ฌ๋ฐ›์€ ํŠน์ • class/data์˜ type์ด ์ผ์น˜ํ•  ๋•Œ๋Š” True ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” False๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    ์ฒซ๋ฒˆ์งธ ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด๊ฐ€ ํ•ด๋‹น class์˜ instance๊ฐ€ ๋งž๋Š”์ง€, data type์ด ์ผ์น˜ํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ!

    ์˜ˆ์ œ1) ๋งŒ์•ฝ classinfo๊ฐ€ ์—ฌ๋Ÿฌ type object๋“ค์ด ๋‚˜์—ด๋œ tuple๋กœ ์ „๋‹ฌ๋œ๋‹ค๋ฉด, ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜๋Š” type์ด ์กด์žฌํ•  ๋•Œ๋Š” True๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    ์˜ˆ์ œ2) ์ƒ์†๊ด€๊ณ„์ธ ๊ฒฝ์šฐ, ์ž์‹์€ ๋ถ€๋ชจ์˜ instance์ด๋ฏ€๋กœ instance๊ฐ€ True๊ฐ’์„, ๋ถ€๋ชจ๋Š” ์ž์‹์˜ instance๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ False๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    ์˜ˆ์ œ1 ์˜ˆ์ œ2

     

    ์ตœ์ข…์ ์œผ๋กœ renderer์— ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.


    ์—ญ์‹œ ์–ธ์–ด์— ๋Œ€ํ•œ ์ดํ•ด๋„๊ฐ€ ๋†’์„์ˆ˜๋ก, ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ๋Ÿฌ๋‹์ปค๋ธŒ๋Š” ๊ฐ•ํ•ด์งˆ ๊ฒƒ์ด๋ผ๋Š”๊ฒŒ ๋Š๊ปด์ง„๋‹ค.
    ํŒŒ์ด์„ ์€ ๊ณต๋ถ€ํ•˜๋ฉด ํ• ์ˆ˜๋ก ์ œ๊ณตํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์™€ ๊ธฐ๋Šฅ๋“ค์ด ์ •๋ง ๋งŽ๋‹ค. 100๋ถ„ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฝ”๋“œ๋ฅผ ๋” ๊นŒ๋ณด๊ณ , ๋ฌธ์„œ๋„ ์ฝ์œผ๋ฉด์„œ ๊ณต๋ถ€ํ•  ํ•„์š”๊ฐ€ ์žˆ์Œ!

    'Programming Language > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    @abstractmethod๋ฅผ ํ†ตํ•œ SOLID ์›์น™ ์ ์šฉํ•˜๊ธฐ  (0) 2022.02.27

    ๋Œ“๊ธ€

Designed by Tistory.