728x90
λ°μν
νλ‘κ·Έλλ° μΈκ³λ₯Ό νꡬν©μλ€.
λ¬Έμμ΄μ μ λ¬ λ°μμ λ¬Έμ νλμ© μΆμΆνμ¬ λ³ννλ μ΄ν°λ μ΄ν°(Iterator) μμ±νκΈ°
<μμ± μ½λ>
### μ΄ν°λ μ΄ν° ν΄λμ€ μμ±ν΄μ Hello κ° λ¨μ΄ μΆλ ₯νκΈ°
# - ν΄λμ€ μ΄λ¦ : StringIterator
# - μμ λ¬Έμμ΄μ λ°μμ μ²λ¦¬ν©λλ€.
# - μμ λ¬Έμμ΄μ μΈλΆμμ ν΄λμ€ μμ±μ λ£μ΄μ€λλ€.
class StringIterator:
### ν΄λμ€ μμ±μ
def __init__(self, p_text) :
# - nextν¨μμμ 1μ© μ¦κ°μν€λ©΄μ λ°λ³΅ 쑰건μ μ¬μ©ν λ³μ
self.index = 0
# - λ°μμ¨ λ¬Έμμ΄
self.text = p_text
### λ°λ³΅μνμ μν iter ν¨μ μ μ
def __iter__(self) :
return self
### ν건 ν건 μ²λ¦¬λ₯Ό μν next ν¨μ μ μ
def __next__(self) :
if self.index < len(self.text) :
### λ¬Έμμ΄μμ λ¬Έμ νλμ© μΆμΆνκΈ°
result = self.text[self.index]
self.index += 1
return result
else :
raise StopIteration
### μ΄ν°λ μ΄ν° κΈ°λ₯ μ¬μ©νκΈ°
# λ°λ³΅λ¬Έμ μ΄μ©ν΄μ μ 체 λ°λ³΅νκΈ°
# - ν΄λμ€ μμ±νκΈ°
msg = "Hello"
string_iter = StringIterator(msg)
### λ°λ³΅λ¬Έμ μ΄μ©ν΄μ μ 체 μΆμΆνκΈ°
for char in string_iter :
print(char)
<μ€ν νλ©΄>
728x90
λ°μν