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()

 

๋ฐ˜์‘ํ˜•
๋‹คํ–ˆ๋‹ค