λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

🐍 파이썬

파이썬의 μ»¨ν…Œμ΄λ„ˆ 객체, Container Object in Python

파이썬의 μžλ£Œκ΅¬μ‘°μ—λŠ” μ»¨ν…Œμ΄λ„ˆ νƒ€μž… 객체와 μ‹œν€€μŠ€ νƒ€μž… 객체가 μžˆλ‹€.


μ»¨ν…Œμ΄λ„ˆ, Container:

μ»¨ν…Œμ΄λ„ˆλž€ __contain__ λ©”μ„œλ“œκ°€ κ΅¬ν˜„λ˜μ–΄μžˆλŠ” 객체λ₯Ό λ§ν•œλ‹€.

νŒŒμ΄μ¬μ—μ„œλŠ” ν•œ 객체(Object)λŠ” λ‹€μ–‘ν•œ 클래슀λ₯Ό 상속받을 수 μžˆλ‹€.

μ»¨ν…Œμ΄λ„ˆλŠ” 객체λ₯Ό λ§Œλ“œλŠ”λ° 직접 κ΄€μ—¬ν•˜μ§„ μ•ŠλŠ”λ‹€.


객체 xκ°€ Containerνƒ€μž…μΈμ§€ μ•„λ‹Œμ§€λŠ”  type(x)  λ‘œλŠ” 확인할 수 μ—†λ‹€.  issubclass(x,y)  λ₯Ό μ‚¬μš©ν•΄μ•Όν•œλ‹€.


Python3

from collections import Container

is subclass(X, Container)  # Xν΄λž˜μŠ€κ°€ Container 클래슀λ₯Ό μƒμ†λ°›μ•˜λŠ”μ§€ 확인.


__contain__  λ©”μ„œλ“œλŠ” 일반적으둜 Boolean 값을 λ°˜ν™˜.

__contain__  λ©”μ„œλ“œλŠ” νŒŒμ΄μ¬μ—μ„œ  in  ν‚€μ›Œλ“œκ°€ 발견될 λ–„ ν˜ΈμΆœλœλ‹€.



 

μ‹œν€€μŠ€, Sequence:

λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλŠ” 반볡 κ°€λŠ₯ iterable ν•˜λ‹€.

그런데 string 은 μ™Όμͺ½λΆ€ν„° 였λ₯Έμͺ½κΉŒμ§€ 순차적으둜 λ°˜λ³΅ν•˜λŠ” 반면, dictionary κ³Ό set은 λ°˜λ³΅ν•  λ•Œλ§ˆλ‹€ μˆœμ„œκ°€ 바뀐닀.

stringμ΄λ‚˜ range처럼 μ»¨ν…Œμ΄λ„ˆ 객체 쀑 μˆœμ„œλ₯Ό 갖은 것을 μ‹œν€€μŠ€κ°μ²΄λΌκ³  ν•œλ‹€.