LINUX.ORG.RU

декоратор Python

 


0

1

Ситуация следующая: нужно использовать функцию, например, funct как с декоратором,например, decor, так из без него.

Как бы сделать так, чтобы функцию funct два раза не определять?

$ cat test.py 
#!/usr/bin/python
def decor(f):
    def wrapped(x):
         return f(x)+x
    return wrapped

def funct(x):
    return x**2

print funct(2)

@decor
def funct(x):
    return x**2

print funct(2)

$ ./test.py
4
6

#!/usr/bin/python


def decor(f):
    def wrapped(x):
        return f(x)+x
    return wrapped


def funct(x):
    return x**2

decorated_funct = decor(funct)

print funct(2)
print decorated_funct(2)

или я не понял вопроса

C1nde
()
def decor(f):
    def wrapped(x, orig=False):
        return (f(x) if orig else f(x)+x)
    return wrapped

@decor
def funct(x):
    return x**2

print funct(2)
print funct(2, orig=True)
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.