Day4 Python OOP

๊น€์ข…์˜ยท2021๋…„ 1์›” 21์ผ
0

๐Ÿ“Python ๋”๋ธ” ์–ธ๋” ์Šค์ฝ”์–ด

  • __ ๋Š” ํŠน์ˆ˜ํ•œ ์˜ˆ์•ฝ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜ ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜๋ช… ๋ณ€๊ฒฝ(๋งจ๊ธ€๋ง)์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
    ex) __main__ , __add__, __str__, __eq__
class SoccerPlayer(object):
    def __str__(self):
        return "Hello, My name is %s. I play in %s in center " % 
        (self.name, self.position)
jinjyun = SoccerPlayer("Jinhyun", "MF", 10)
print(jinjyun)

๐Ÿ“ decorate

  • decorate ๊ฐœ๋…์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ์— ์•ž์„œ ํŒŒ์ด์ฌ ํ•จ์ˆ˜๋Š” first-class objects๋ผ๊ณ  ํ•œ๋‹ค.
    ์ผ๋“ฑํ•จ์ˆ˜ ๋˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด๋Š” ๋ณ€์ˆ˜๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.
    ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ์ด ๊ฐ€๋Šฅํ•˜๊ณ  + ๋ฆฌํ„ด ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป
def square(x):
    return x * x
    
f = square
f(5)
  • ํ•จ์ˆ˜ ๋‚ด์— ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค ์ด๋ฅผ Inner function์ด๋ผํ•œ๋‹ค.
def print_msg(msg):
    def printer():
        print(msg)
    printer()
    
print_msg("Hello, Python")
  • Closures : inner function์„ return๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜
def print_msg(msg):
    def printer():
        print(msg)
    return printer
    
another = print_msg("Hello, Python")
another()
  • decorator function์„ ํ†ตํ•ด์„œ ๋ณต์žกํ•œ ํด๋กœ์ ธ ํ•จ์ˆ˜๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
def star(func):
    def inner(*args, **kwargs):
        print("*" * 30)
        func(*args, **kwargs)
        print("*" * 30)
    return inner
    
@star
def printer(msg):
    print(msg)
printer("Hello")

printer() -> star(func)
"Hello" -> inner(*args, *kwargs) -> func(args, **kwargs)
๋กœ ์ „๋‹ฌ ๋˜๋ฉด์„œ starํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ๋Š” ์—ญํ• 

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด