-
ํ์ด์ ์ isinstance ํ์ฉํ๊ธฐProgramming Language/Python 2021. 12. 29. 23:33
๐ฉ๐ป๐ป Pythonicํ๊ฒ ์ฝ๋ ์์ฑํ๊ธฐ
Django REST ํ๋ ์์ํฌ์์ API response๋ฅผ ์ปค์คํฐ๋ง์ด์งํ๊ธฐ ์ํ์ฌ renderer๋ฅผ ์์ฑํ๊ณ ์์๋ค.
JSend ํฌ๋งท์ ๋ฐ๋ฅผ ๊ฒ์ด๋ฏ๋ก, ์๋ฌ์ฝ๋๋ค์ ๋ํ์ฌ ์์ฑํด์ผ ํ json format์ ๋ค์๊ณผ ๊ฐ์๋ค.400๋ฒ๋ ์๋ฌ์ฝ๋๋ฅผ ๋ฐํํ๋ client error๋ค์ ๋ํ format์ ์์ฑํ๋ ค ํ๋๋ฐ..
400์ ๋ฐํํ๋ValidationError
์ ๋๋จธ์ง 400๋ฒ๋ ์๋ฌ๋ค์ด ๋ฐํํ๋ data์ type์ด ๋ฌ๋๋ค.์ฒ์์ ๋ฐํ๋๋
ErrorDetail
๊ฐ์ฒด์ ๋ณ์์ธ code(exceptionclass๋ค์ ์ ์๋default_code
๊ฐ)๋ฅผ ๋ฝ์์์
400๋ฒ๋ ์๋ฌ๋ฅผ ๋ ์ข ๋ฅ๋ก ๋๋์๋๋ฐ, ํน์ ์๋ฌ์ ๋ํด์๋ง ์ด๋ ๊ฒ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌ๋ฅผ ํ๋ค๋ ๊ฒ์ด ์ ๋ง์์ ๋ค์ง ์์๋ค.๐ exceptions.py ํจ์๋ฅผ ์กฐ๊ธ ๋ ๋ค์ ธ๋ณด์
exceptions.py
์ ์ ์ธ๋_get_code(data)
ํจ์์ ์กด์ฌํ๋ builtin methodisinstance
๋ฅผ ๋ฐ๊ฒฌํ๋ค.
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