# class Test(object):
  # def __call__(self):
    # print('-----test----')

# t= Test()
# t() 调用主要有个__call__方法

# __new__ __init__ __del__ __str__ __slots__ __call__

class Test(object):
  def __init__(self, func):
    print("---初始化---")
    print("func name is %s"%func.__name__)
    self.__func = func
  def __call__(self):
    print("--z装饰器中的功能---")
    self.__func()

def __news__(self):
  print('---------')

@Test #相当于创建了一个对象
def test():
  print("----test----")

test()
# ---初始化---
# func name is test
# --z装饰器中的功能---
# ----test----

python 把类当作 装饰器的更多相关文章

  1. python使用类作为装饰器

    1.普通就是一个函数作为装饰器,也可以用类名作为装饰器. 因为类和函数都是callable的,都可以使用括号来调用运行他. 2.上上篇的缓存一段时间的还是函数作为装饰器,类只是充当了比模块更下一级的命 ...

  2. 【python】-- 类的装饰器方法、特殊成员方法

    装饰器方法 类的另外的特性,装饰器方法:静态方法(staticmethod).类方法(classmethod).属性方法(property) 一.静态方法 在方法名前加上@staticmethod装饰 ...

  3. python - 用类写装饰器

    这里用到了__call__的class内置参数 #类装饰器: class zsq(): #本质是定义一个参数,让装饰的主题传递至__call__方法内部 def __init__(self,obj): ...

  4. python__高级 : 类当作装饰器

    类在创建对象时,会调用 __init__ 初始化一些东西 , 然后 如果类中定义了 __call__ 方法,可以直接用  对象()  这种方法调用,所以可以用类来装饰函数: class Test(ob ...

  5. python用类实现装饰器

    一.代码 #利用__call__方法,装饰器的执行流程:当添加装饰器语法糖时,会把语法糖的变量名加()执行,并将被装饰的函数名传入.所以当类加()执行时,执行了__init__,产生的对象就是被装饰的 ...

  6. python面向对象--类的装饰器

    # def deco(obj): # print("=====",obj) # obj.x=1 # return obj # @deco#===> test = deco(t ...

  7. python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解

     1.前言 Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题 ...

  8. 11.python描述符---类的装饰器---@property

    描述符1.描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()这三个内置方法中的一个,描述符也被称为描述符协议(1):__ ...

  9. Python之路(第二十八篇) 面向对象进阶:类的装饰器、元类

    一.类的装饰器 类作为一个对象,也可以被装饰. 例子 def wrap(obj): print("装饰器-----") obj.x = 1 obj.y = 3 obj.z = 5 ...

随机推荐

  1. Netty实现简单UDP服务器

    本文参考<Netty权威指南> 文件列表: ├── ChineseProverbClientHandler.java ├── ChineseProverbClient.java ├── C ...

  2. 椭圆曲线密码学ECC

      椭圆曲线密码学(Elliptic curve cryptography),简称ECC,是一种建立公开密钥加密的算法,也就是非对称加密.类似的还有RSA,ElGamal算法等.ECC被公认为在给定密 ...

  3. inception_v2版本《Rethinking the Inception Architecture for Computer Vision》(转载)

    转载链接:https://www.jianshu.com/p/4e5b3e652639 Szegedy在2015年发表了论文Rethinking the Inception Architecture ...

  4. unigui 在单据中,某输入为必填项的 JS代码

     给大家分享下在单据中,某输入为必填项,用红框标示的简单处理方法:UniSession.AddJS(UniEdit1.JSName+ '.el.setStyle({"border" ...

  5. 使用 Charles 抓取 App 网络请求

    最近开发App的时候需要用到大量其他应用的数据,但接口不公开,所以想到了抓取.差不多要读到5W的用户数据,采用的是找到数据接口,然后不停发请求的方式.用到的抓取工具是Charles,本文讲解的应用是W ...

  6. 浏览器开启桌面通知Web Notification

    本文主要描述如何开启各个浏览器的桌面通知功能 一.谷歌浏览器(chrome) 点击地址栏前面的图标

  7. 004_wireshark专题

    一.常用的wireshark搜索语法 (1) http.request.uri contains "admin/activities" #搜索URL包含"admin/ac ...

  8. Centos 6 安装FreeSWITCH

    为了安装FreeSWITCH ,我选择的Linux是CentOS,目前最新的Centos版本是6.具体安装CentOS的是步骤详见网上的其它资料,本节的主要目的是为了记录FreeSWITCH的安装过程 ...

  9. HDU 5514

    题意: 给你 N 个数 和 一个 M: 对于 每一个 Ni , 乘以 K 取摸 M 都有一个 集合, 把所有集合合并, 求和 Σ ai ( ai → K * Ni % M ) 思路 : 最开始 直接求 ...

  10. Js -----后台json数据,前端生成下载text文件

    需要引入 <script src="/assets/libs/single_file/jquery.min.js"></script> <script ...