15. Декораторы.
- Декоратор - способ задания изменения поведения некоторой функции.
 
- По сути, представляет собой функцию, которая принимает и возвращает функции.
 
- Задаются просто созданием подходящей функции.
 
- Применяются записью перед телом функции после символа @.
 
def multiply_result(func):
    def multiplier(*args, **kwargs):
        return -1 * func(*args, **kwargs)
    return multiplier
@multiply_result
def get_random_value():
    return 4
def get_one_more_random_value():
    return 4
print get_random_value()
print get_one_more_random_value()
 
Некоторые встроенные декораторы
- @classmethod - делает из функции т.н. классовый метод.
 
- @staticmethod - делает из функции статический метод класса.
 
class SomeClass(object):
    @classmethod
    def print_name(cls):
        print cls.__name__
class ChildClass(SomeClass):
    pass
SomeClass.print_name()
ChildClass.print_name()
 
class SomeOtherClass(object):
    @staticmethod
    def print_hello():
        print "Hello!"
SomeOtherClass.print_hello()