美文网首页
python 装饰器 元类

python 装饰器 元类

作者: 浮华_e823 | 来源:发表于2018-09-04 08:42 被阅读0次

装饰器

python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针)。
实质: 是一个函数
参数:是你要装饰的函数名(并非函数调用)
返回:是装饰完的函数名(也非函数调用)
作用:为已经存在的对象添加额外的功能
特点:不需要对对象做任何的代码上的变动

装饰器作用

装饰器最大的作用就是对于我们已经写好的程序,我们可以抽离出一些雷同的代码组建多个特定功能的装饰器,这样我们就可以针对不同的需求去使用特定的装饰器,这时因为源码去除了大量泛化的内容而使得源码具有更加清晰的逻辑。

函数的函数装饰器

import time
def decorator(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        func()
        end_time = time.time()
        print(end_time - start_time)

    return wrapper

@decorator 
def func():
    time.sleep(0.8)

func() # 函数调用
# 输出:0.800644397735595

类方法的函数装饰器

import time

def decorator(func):
    def wrapper(me_instance):
        start_time = time.time()
        func(me_instance)
        end_time = time.time()
        print(end_time - start_time)
    return wrapper

class Method(object):

    @decorator 
    def func(self):
        time.sleep(0.8)

p1 = Method()
p1.func() # 函数调用

通用装饰器

def aa(fun):
    def inner(*args,**kwargs):
        print('啦啦')                
        return fun(*args,**kwargs)
    return inner

有参通用装饰器

def w(a):
    def w1(fun):
        def inner(*args,**kwargs):
            if a == 1 :
                print('验证1')
            elif a == 2:
                print('验证2')
            return fun(*args,**kwargs)
       return inner
    retrn w1

@w(1)
def play (a,b):
    print('现在是下午%d点%d分'%(a,b))
play(3,30)

@w(2)
def play1():
    print('啦啦啦')
play1()

元类

元类是一个类的类。就像一个类定义一个类的实例的行为一样,元类定义了一个类的行为。一个类是元类的一个实例。

相关文章

  • python 装饰器 元类

    装饰器 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器...

  • python 装饰器 元类

    装饰器 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器...

  • python 装饰器 元类

    装饰器 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器...

  • python元类and装饰器

  • Python装饰器

    装饰器简介 在Python中,装饰器属于“元编程”的类别,“元编程”的主要目的就是创建函数或者类,并且用它们来操纵...

  • python 类装饰器与元类

    类装饰器,元类 还有一些技术可以简化上面的代码,其中一种是使用类装饰器: Class decorator to a...

  • Python中的装饰器

    Python中的装饰器 不带参数的装饰器 带参数的装饰器 类装饰器 functools.wraps 使用装饰器极大...

  • 解惑,从新认识python装饰器

    概念 python有两种装饰器: 函数装饰器(function decorators) 类装饰器(class de...

  • Python装饰器

    Python装饰器 一、函数装饰器 1.无参装饰器 示例:日志记录装饰器 2.带参装饰器 示例: 二、类装饰器 示例:

  • TypeScript: 类的装饰器(三)

    带参数的类的装饰器 学习 python 的同学应该知道,python 中也有装饰器,而且 python 中的众多框...

网友评论

      本文标题:python 装饰器 元类

      本文链接:https://www.haomeiwen.com/subject/gmwwwftx.html