728x90
1 ) kwargs
Python 3.12 ๋ถํฐ ๋ณ์ Type์ ๊ดํ ๋ชจ๋์ด ๋ง์ด ๊ฐ์ ๋์๋ค. ๊ทธ ์ค Typing์ NotRequired, TypedDict, Unpack์ ์ฌ์ฉํด์ class ์ ์์ ํจ์ ๋ณ์ ๊ด๋ฆฌ๊ฐ ์ข๋ ์ฉ์ดํด์ก๋ค.
from typing import NotRequired, TypedDict, Unpack
class Kwargs(TypedDict):
name : str
age : NotRequired[int]
def profile(**kwargs: Unpack[Kwargs]) -> None:
for k, v in kwargs.items():
print(f"{k}: {v}")
if __name__ == "__main__":
profile(name="Ethan", age=25)
Kwargs์ Parameter๋ฅผ TypedDict๋ฅผ ์ด์ฉํด dictionary๋ก ์ ์ธํ๊ณ class ๋ด์์ ๋ฐ์ ์ ์์ด ๊ฐ๋ ์ฑ์ด ์ข์์ก๋ค.
NotRequired๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ ํค๋ฅผ ํ์๊ฐ ์๋ ๊ฒ์ผ๋ก ํ์ํ ์ ์๋ค.
Unpack ํํ์ด ์์ถ ํด์ ๋ ๊ฒ์ผ๋ก ํ์ํ๊ธฐ ์ํด ์ฌ์ฉ
2 ) override
์์ ๋ฐ์ Fruit์ ์๋ ํจ์๋ฅผ Banana์์ ์ฌ์ ์ ํ ๋ @override decorator๋ฅผ ์ฌ์ฉํด์ ๋ณ๊ฒฝ์ ๋ฐฉ์งํ ์ ์๋ค.
from typing import override
class Fruit:
def color(self) -> None:
print("yellow~!")
def weight(self) -> None:
print("30g")
class Banana(Fruit):
@override
def weight(self) -> None:
print("40g")
if __name__=='__main__':
Banana().weight()
๋ฐ์ํ
'๐ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[pipx] python ์ ์ญ ํจํค์ง๊ด๋ฆฌ pipx (0) | 2023.11.29 |
---|---|
[mandelbrot set] ๋ง๋ธ๋ธ๋ก ์งํฉ (0) | 2023.11.19 |
[Version] 3.12 rc (Release Candidates) (1) - f-string (0) | 2023.10.18 |
[JupyterNote Book] Jupytext Notebook -> Markdown (0) | 2023.09.30 |
[Python] importlib ์ฌ์ฉ์ ์ ์ ๋ฆฌ๋ก๋ (0) | 2023.08.25 |