๋ฌธ์๋ฏธ๋๊ณผ ๊ฐ์ ๋ด์ฉ์
๋๋ค
ํ์
์ฒด์ปค๊ฐ ์ฝ๋๋ฅผ ๋ถ์ํด๊ฐ๋ฉด์ ํ์
๋ค์ด ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐ ๋์๋์ง ๊ฒ์ฌํ๋๋ฐ, 1. pyright ์ ๊ฒฝ์ฐ, while cur_node.pointer.pointer is not None: cur_node = cur_node.pointer ์์ cur_node๋ฅผ cur_node. pointer ๋ก ์ฐ์๋ point ๊ฐ None์ด ์๋์ง ๋ช
์๋์ง ์์์ ์๋ฌ๊ฐ ๋๋ ๊ฑธ๋ก ๋ณด์ด๊ตฌ์.2. mypy์ ๊ฒฝ์ฐ result = cur_node.pointer ๋ก ํ ๋น ํ๋ฉด, pointer๊ฐ None์ธ์ง ์๋์ง mypy์์ ์์ง ๋ชปํด์ ์๋ฌ๊ฐ ๋๋ ๊ฑธ๋ก ๋ณด์
๋๋ค. 3. ์๋์ ๊ฐ์ด ์์ฑํ์๋ฉด ์ฝ๋๊ฐ ์ข ๋ ์ฅํฉํด์ง๊ธฐ๋ ํ๋ mypy, pyright ๋๋ค ํต๊ณผ ํฉ๋๋ค. mypy ๋ pyright๋ ๊ฒ์ฌํ๋ ๋ฐฉ์์ด๋ ์ ์ถํ๋ ๋ฌธ๋งฅ์ด ์ข ๋ค๋ฅด๊ธด ํ๋ค์. def pop(self) -> Optional[T]: if self.head is None: raise ValueError("Stack is empty") cur_node: Node[T] = self.head if cur_node.pointer is None: self.head = None return cur_node.item while cur_node.pointer is not None: # cur_node.pointer๊ฐ None ์ด ์๋์ ๋ช
์ if cur_node.pointer.pointer is not None: cur_node = cur_node.pointer continue result = cur_node.pointer cur_node.pointer = None return result.item if result is not None else None # result๊ฐ None์ด ์๋์ ๋ช
์