Curieux.JY
  • Post
  • Note
  • Jung Yeon Lee

On this page

  • Decorator

πŸ“__init__ VS. __call__

python
2024
Python __init__ VS. __call__
Published

December 19, 2024

Monkey Pathλ₯Ό κ³΅λΆ€ν•˜λ‹€κ°€ ν•œλ²ˆ μ •λ¦¬ν•˜λ©΄ 쒋을 것 κ°™μ•„ Python의 __init__κ³Ό __call__에 λŒ€ν•΄μ„œ μ •λ¦¬ν•˜κ³ μž ν•©λ‹ˆλ‹€.

  • __init__은 μΈμŠ€ν„΄μŠ€ μ΄ˆκΈ°ν™” μ‹œ μ‹€ν–‰
  • __call__은 μΈμŠ€ν„΄μŠ€ 호좜 μ‹œ μ‹€ν–‰
class A:

    def __init__(self):
        print('init')

    def __call__(self):
        print('call')

    def myfunc(self):
        print('my')

print("==== OUTPUT ====")

a = A()

a()

a.myfunc()
==== OUTPUT ====
init
call
my

Decorator

  • λ°μ½”λ ˆμ΄ν„°λŠ” μžμ‹ μ΄ μˆ˜μ‹ν•  ν•¨μˆ˜λ‚˜ λ©”μ†Œλ“œ 내뢀에 λ°›μ•„ 놓아야 함. 그러기 μœ„ν•΄μ„œ __init__에 데이터 속성 μ €μž₯.
  • λ°μ½”λ ˆμ΄ν„°κ°€ ν•˜λŠ” 일은 ν•¨μˆ˜λ₯Ό λŒ€λ¦¬ 호좜.
class MyDecorator:
    def __init__(self, data):
        self.storage = data

    def __call__(self):
        print('data entered :', self.storage.__name__)
        self.storage()
        print('data exited :', self.storage.__name__)

@MyDecorator
def printer():
    print('I print the empty space.')

print('==== start ====')
printer()
==== start ====
data entered : printer
I print the empty space.
data exited : printer

Copyright 2024, Jung Yeon Lee