Új hozzászólás Aktív témák

  • pigster

    senior tag

    Újabb kérdésem lenne decorator témakörben:

    def func_needs_decorator():
    print("I want to be decorated!")

    def decorator_func(original_func):
    def wrap_func():
    print('Code before')
    original_func()
    print('Code after')
    return wrap_func

    decorated_func = decorator_func(func_needs_decorator)
    decorated_func()

    Eredménye:
    Code before
    I want to be decorated!
    Code after

    Ez tiszta sor.

    A @decorator_func a decorated_func = decorator_func(func_needs_decorator) -val egyenértékű (állítólag). De mégsem:
    @decorator_func
    def func_needs_decorator_2():
    print('Want to be decorated twooo!')

    func_needs_decorator_2()

    Ha a @-cal használom, akkor az eredeti def már nem lesz elérhető, csak a dekorált. Ez pont szembemegy azzal, amire jó lenne az egész, hogy bizonyos körülmények között az eredeti függvényt használom, máskor pedig a dekorátorral módosítottat. Ez pont csak akkor lehetséges, ha nem a @ megoldást választom, hanem ezt: decorated_func = decorator_func(func_needs_decorator)

    Vagy rosszul látok valamit?

Új hozzászólás Aktív témák