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

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

ํŒŒ์ด์ฌ ๋งค์ง ๋ฉ”์„œ๋“œ, 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์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค.

๋‚ด์žฅ ๋ฐ˜๋ณตํ˜• ๊ฐ์ฒด๋งŒ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, iterable์€ __iter__ ๋งค์ง๋งค์„œ๋“œ๊ฐ€ ๊ตฌํ˜„๋œ ๊ฐ์ฒด. iterater๋Š” __next__๋งค์ง๋งค์„œ๋“œ๋กœ ๊ตฌํ˜„๋œ ๊ฐ์ฒด์ด๋‹ค.  

for element in object:

__contains__(element)

์ปจํ…Œ์ด๋„ˆ

Container

: __contains__() ๋งค์„œ๋“œ๊ฐ€ ๊ตฌํ˜„๋˜์–ด์žˆ๋Š” ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด iterable Object๋ฅผ ๋งํ•œ๋‹ค.

๊ฐ์ฒด์ธ dict, set, str ๋“ฑ์ด ์ปจํ…Œ์ด๋„ˆ์— ์†ํ•œ๋‹ค.

in ํ‚ค์›Œ๋“œ๊ฐ€ ๋ฐœ๊ฒฌ๋  ๋–„ ํ˜ธ์ถœ๋œ๋‹ค.

element in object:

    __len__()    

 __getitem__() 

์‹œํ€€์Šค

Sequence

์ปจํ…Œ์ด๋„ˆ Container ํƒ€์ž… ์ค‘ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๊ฐ์ฒด์ด๋‹ค. str์ด ์—ฌ๊ธฐ์— ์†ํ•œ๋‹ค.

์‹œํ€€์Šค๋Š” __len__๊ณผ __getitem__์ด ๊ตฌํ˜„๋˜์–ด์žˆ๊ณ  ์ฒซ๋ฒˆ์จฐ ์ธ๋ฑ์Šค 0๋ถ€ํ„ฐ ์‹œ์ž‘๋˜์–ด ํฌํ•จ๋œ ์š”์†Œ๋ฅผ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

for element in object:
  __getattr__()   

๋™์ ์†์„ฑ์กฐํšŒ

 Dynamic attribute access

:

object.<attribute> 
   __call__(*args, *kwarges)   

ํ˜ธ์ถœํ˜•๊ฐ์ฒด

 Callable Object

:

object(*args, **kwargs)