๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ ํŒŒ์ด์ฌ

ํŒŒ์ด์ฌ ๋งค์ง ๋ฉ”์„œ๋“œ, Python Magic Method Cheatsheet. Magic Method Python Concept Sentence __getitem__(key) ์ฒจ์žํ˜• ๊ฐ์ฒด Subscriptable Object : ์ธ๋ฑ์‹ฑ์ด๋‚˜ ์Šฌ๋ผ์ด์Šค์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. object[key] object[i:j] object[i:j:k] __enter__() __exit__() ์ปจํ…์ŠคํŠธ ๋งค๋‹ˆ์ € Context Manager : ์ฃผ๋กœ ๋ฆฌ์†Œ์Šค๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ• ๋‹น๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ๋‘ ํ•ด์ œํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. with object: __iter__() __next__() ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด Iterable Object : ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด. ์˜ˆ๋ฅผ ๋“ค๋ฉด for๋ฌธ์„ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” list, tuple, set, dict์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค. ๋‚ด์žฅ ๋ฐ˜๋ณตํ˜• ๊ฐ์ฒด๋งŒ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„.. ๋”๋ณด๊ธฐ
ํŒŒ์ด์ฌ์˜ ์ปจํ…Œ์ด๋„ˆ ๊ฐ์ฒด, Container Object in Python ํŒŒ์ด์ฌ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์—๋Š” ์ปจํ…Œ์ด๋„ˆ ํƒ€์ž… ๊ฐ์ฒด์™€ ์‹œํ€€์Šค ํƒ€์ž… ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ, Container:์ปจํ…Œ์ด๋„ˆ๋ž€ __contain__ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ตฌํ˜„๋˜์–ด์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.ํŒŒ์ด์ฌ์—์„œ๋Š” ํ•œ ๊ฐ์ฒด(Object)๋Š” ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์ง์ ‘ ๊ด€์—ฌํ•˜์ง„ ์•Š๋Š”๋‹ค. ๊ฐ์ฒด x๊ฐ€ Containerํƒ€์ž…์ธ์ง€ ์•„๋‹Œ์ง€๋Š” type(x) ๋กœ๋Š” ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค. issubclass(x,y) ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. Python3from collections import Containeris subclass(X, Container) # Xํด๋ž˜์Šค๊ฐ€ Container ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•˜๋Š”์ง€ ํ™•์ธ. __contain__ ๋ฉ”์„œ๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Boolean ๊ฐ’์„ ๋ฐ˜ํ™˜.__contain__ ๋ฉ”์„œ๋“œ๋Š” ํŒŒ์ด์ฌ์—์„œ in ํ‚ค์›Œ.. ๋”๋ณด๊ธฐ
Pythonic Code, ํŒŒ์ด์ฌ์Šค๋Ÿฌ์šด ์ฝ”๋“œ Idiom์ด๋ž€ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•. ๋งค๋ฒˆ ๋™์ผํ•œ ๊ตฌ๋„๋ฅผ ๋ฐ˜๋ณตํ•ด ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ . ๋””์ž์ธ ํŒจํ„ด์€ ๊ณ ์ฐจ์›์ ์ธ ๊ฐœ๋…์œผ๋กœ ์ฝ”๋“œ๋กœ ๋ฐ”๋กœ ๋ณ€ํ™˜๋˜์ง€ ์•Š๋Š” ๋ฐ˜๋ฉด, idiom์€ ํŠน์ •ํ•œ ์ž‘์—…์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๋งํ•œ๋‹ค. Idiom์€ ์‹ค์ œ ์ฝ”๋“œ์ด๋ฏ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค. ํŠนํžˆ ํŒŒ์ด์ฌ์—์„œ๋Š” ํŒŒ์ด์ฌ ํŠน์œ ์˜ idiom์„ ๋”ฐ๋ฅธ ์ฝ”๋“œ๋ฅผ pythonicํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. index์™€ slice ์ดํ•ดํ•˜๊ณ  indexing ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ.Index: numbers[-1] ํŒŒ์ด์ฌ์—์„œ๋„ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋‚˜ ํƒ€์ž…์—์„œ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์ง€์›ํ•œ๋‹ค. ํŠน์ดํ•œ ์ ์€ ์Œ์ˆ˜ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•ด ๋์—์„œ๋ถ€ํ„ฐ ์ ‘๊ทผ ๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. Slice: numbers.. ๋”๋ณด๊ธฐ