2021-06-01 通过类去实现装饰器__call__.

2023-10-27

1. 含有__init__的类
class MyClass:
    a = "cherry"

    def __init__(self,age,sex):
        self.age = age
        self.sex = sex

    def say(self):
        print("hello")

obj = MyClass(age=10,sex="male") 
# 给类对象初始化赋值
2. 不添加call方法
class MyDecorator:
    def __init__(self, func):
        self.func = func
@MyDecorator  # work1 =MyDecorator(work1) # 相当于给类对象初始化赋值,参考1中的解释
def work1(a, b):
    print("--这是原功能函数")
    return a + b
work1 = MyDecorator(work1)
print(work1)  # <__main__.MyDecorator object at 0x032F2448> 返回的是MyDecorator多的对象

print(work1())  

TypeError: ‘MyDecorator’ object is not callable

3.如果想要被调用,需要加入__call__方法
class MyDecorator:
    def __init__(self, func):
        self.func = func

    **def __call__(self, *args, **kwargs):
        print("装饰器扩展的功能1")
        res = self.func(*args, **kwargs)
        print("装饰器扩展的功能2")
        return res**


@MyDecorator  # work1 =MyDecorator(work1) # 相当于给类对象初始化赋值
def work1(a, b):
    print("--这是原功能函数")
    return a + b
work1 = MyDecorator(work1)
print(work1)  # <__main__.MyDecorator object at 0x032F2448> 返回的是MyDecorator多的对象

print(work1())  # 此时就不会报错了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021-06-01 通过类去实现装饰器__call__. 的相关文章

  • MYSQL——解决多维度随机组合查询场景:grouping sets函数

    一 引入 注意 通常用在构建数据集市和复杂随机组合场景查询时使用 对于经常需要对数据进行多维度的聚合分析的场景 您既需要对A列做聚合 也要对B列做聚合 同时要对A B两列做聚合 因此需要多次使用union all 案例 比如此处有一张表te
  • C++算法之快速排序

    C 算法之快速排序 文章目录 C 算法之快速排序 一 快速排序引出 二 快排步骤 三 代码实现 四 复杂度分析 一 快速排序引出 我们知道 给一个长度为n的序列排序 有三种很简单的算法 选择排序 冒泡排序 插入排序 这三种算法的复杂度均为O
  • SpingBoot集成Swagger和Knife4j

    1 项目开发中编写接口文档实在是痛苦 于是打算引入swagger 之后发现swagger不够舒服 便又引入knife4j springboot的相关依赖不再贴 下面是swagger和knife4j的相关依赖 版本有需求的可以上maven中央
  • 百度群组链接分享 - 铁人圈子

    百度网盘群组链接分享 铁人圈子 铁人圈子 tierenpan com 是一个分享百度网盘群组的发布平台 可以在铁人圈子上实时分享你的群组链接 并且和其他网友互动交流分享资源 群组分享 百度群组链接分享 地址 https www tieren
  • shape文件格式简单说明

    一 简介 ShapeFile是Esri开发的一种空间数据格式 她是一种矢量数据存储格式 通常用于描述几何体形状 点 线 面 及相关属性 二 组成说明 2 1 必须文件 shp 图形格式 用于描述几何体形状 shx 图形索引格式 记录每一个几
  • 一文带你彻底搞懂二叉树(Python实现)——真香

    文章目录 前言 树 树中的一些术语 树的分类 树的存储表示 二叉树 二叉树的性质 二叉树的实现 二叉树结点的实现 二叉树的创建 广度优先遍历 先序 中序 后序遍历 后记 前言 终于到了数据结构中的关键部分了 二叉树 说起二叉树啊 简直是我当
  • PTA 浙大版《C语言程序设计(第4版)》题目集 习题4-6 水仙花数

    原题链接 问题描述 水仙花数是指一个N位正整数 N 3 它的每个位上的数字的N次幂之和等于它本身 例如 153 13 53 33 本题要求编写程序 计算所有N位水仙花数 输入格式 输入在一行中给出一个正整数N 3 N 7 输出格式 按递增顺
  • abp Application层获取请求的Header内容

    abp 如何在应用层返回header自定义的内容 参考 https blog csdn net u012659600 article details 99579369 首先在AppService中注入HttpContextAccessor
  • Ubuntu 更新 CMake 版本

    项目中有时候会出现CMake版本小于最低要求的情况 实际上没有有必要这么高的要求 但是在不能改对方代码的情况下 只能去升级自身的版本了 尝试了网上说的直接update之后再次安装的方式 结果版本号没有改变 sudo apt get upda
  • css文字超出隐藏显示...

    单行 overflow hidden white space nowrap text overflow ellipsis 多行 display webkit box webkit box orient vertical webkit lin
  • Windows10开启Hyper-v并安装Linux CentOS虚拟机

    Windows10开启Hyper v虚拟机配置静态网络 1 Windows10 开启Hyper v 右键单击 Windows 按钮并选择 应用和功能 选择相关设置下右侧的 程序和功能 选择 打开或关闭 Windows 功能 选择 Hyper
  • Element 标签页样式修改

    deep el tabs nav wrap after height 1px deep el tabs item height 50px font size 16px font family PingFang SC font weight
  • Java编程实现Softmax函数功能

    Java编程实现Softmax函数功能 Softmax函数是一种常用的数学函数 广泛应用于机器学习和深度学习领域 尤其在分类问题中起到重要作用 本文将介绍如何使用Java编程实现Softmax函数 并提供相应的源代码 首先 我们来了解一下S
  • centos7启动docker: dial tcp 104.18.123.25:443: i/o timeout.

    在centos7上安装好了docker之后 测试docker是否安装成功 使用官方给出的sudo docker run hello world 解决 再运行一遍命令即可
  • 自定义 scrollview 标头部分的滑动速度慢(scrollview 子控件滑动速度不一致)

    scrollview 子控件滑动速度不一致 先来个布局图 向上滑动时 图片向上划出的速度较下面的蓝色view慢 现在我们先来看布局文件
  • 基于tensorflow的手势检测和手势识别分类

    项目目的 在手机端实现用户手势的检测并且识别用户所做的手势 遇到的问题 首先在手部检测的解决办法中 我尝试过用opencv进行手部识别 但存在的问题是背景对手的识别的影响太大 如果采用颜色进行手和背景的区分的话 又会受到光照等影响 总体而言
  • 【机器学习实战】决策树 python代码实现

    typora copy images to upload 第三章 决策树 3 1决策树的构造 优点 计算复杂度不高 输出结果易于理解 对中间值的缺失不敏感 可以处理不相关的特征数据 缺点 可能会产生过度匹配的问题 适用数据类型 数据型和标称
  • 弱网的概念以及弱网测试

    什么是弱网测试 在当今移动互联网盛行的时代 网络的形态除了有线连接 还有2G 3G Edge 4G Wifi等多种手机网络连接方式 不同的协议 不同的制式 不同的速率 使移动应用运行的场景更加丰富 从测试角度来说 需要额外关注的场景就远不止
  • SpringBoot日志配置【详解】

    文章目录 前言 1 为什么使用Logback 2 Logback使用 2 1 添加依赖 2 2 默认配置 3 logback spring xml详解 3 1 configuration元素 3 2 logger 元素 3 3 root 元
  • 购物商城---页面缓存oscached

    流程图 web xml

随机推荐

  • VC++使用HOOK API 屏蔽PrintScreen键截屏以及QQ和微信默认热键截屏

    转载 http blog csdn net easysec article details 8833457 转载 http www vckbase com module articleContent php id 567 title 用VS
  • 离线安装Docker镜像

    部分线上服务器无法连接公网 或者服务器下载镜像比较慢 遇到这种情况要怎么解决 我们可以在联网的本机或服务器上 将已经下载好的镜像导出 然后导入到没有网络的服务器上 通过Docker加载 例如 这里有一个镜像grafana loki 2 2
  • 订单系统开发

    一 订单系统基本框架的搭建 1 创建maven工程 pom xml文件内容如下
  • WSA with Magisk Root安装配置教程(2023.5)

    前言 最近正式走上了安卓逆向的道路 刚开始尝试了各种模拟器 雷电 夜神 及其海外版 并且安装配置了多次magisk 倒不是说这些模拟器的体验有多差 主要还是不能与 Windows Hype V 共存导致无法使用 WSL 这点让我无法接受 s
  • markdown语法最全汇总

    一 markdown简介 注 如果对markdown有一定了解 可以略过此处 第一章主要对markdown基础知识做个补充 摘自菜鸟教程此处原文档 博客原地址 欢迎收藏访问 1 1 markdown背景 1 markdown是一种轻量级标记
  • 一枚芯片的实际成本是多少?(1)

    芯片的硬件成本构成 芯片的成本包括芯片的硬件成本和芯片的设计成本 芯片硬件成本包括晶片成本 掩膜成本 测试成本 封装成本四部分 像ARM阵营的IC设计公司要支付给ARM设计研发费以及每一片芯片的版税 但笔者这里主要描述自主CPU和Intel
  • shiny教程一 -- shiny入门

    Shiny是一个R软件包 可轻松从R直接构建交互式Web应用程序 本课程将使您立即开始构建Shiny应用程序 如果还未安装Shiny软件包 打开R会话窗 确保联网状态 然后运行 install packages shiny Shiny软件包
  • vue 中click.stop的用法

    click stop 阻止点击事件继续传播 场景 在table中使用 点击当前行 当前行被勾选 但是点击当前行中按钮或点击事件时 使用此方法 则在触发当前点击事件后 阻止行的选中事件 使用 html
  • input“输入框”常见问题及解决方法

    1 ios中 输入框获得焦点时 页面输入框被遮盖 定位的元素位置错乱 当页input存在于吸顶或者吸底元素中时 用户点击输入框 输入法弹出后 fiexd失效 页面中定位好的元素随屏幕滚动 针对这个问题 我们一起来看下以下几种方案 方案一 W
  • FOXBORO FBM232 P0926GW 自动化控制模块

    Foxboro FBM232 P0926GW 是 Foxboro 福克斯博罗 自动化控制系统的一部分 通常用于监测和控制工业过程 以下是关于这种类型的自动化控制模块可能具有的一些常见功能 数字输入通道 FBM232 P0926GW 控制模块
  • 鸿蒙系统 服务器,鸿蒙开发之环境准备【1】-基于Deepin20操作系统的编译服务器环境搭建遇到的问题及解决方式...

    Hi3861 code 1 0 python build py wifiiot 196 197 ACTION vendor hisi hi3861 hi3861 run wifiiot scons build lite toolchain
  • vscode launch.json 常用配置

    Use IntelliSense to learn about possible attributes Hover to view descriptions of existing attributes For more informati
  • 毕业设计-基于机器视觉的智能安检系统设计 -OpenCV

    目录 前言 课题背景和意义 实现技术思路 一 智能安检机概述 二 嵌入式控制系统 三 图像处理模块设计 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精
  • Blender石头雕刻

    1 建立一个plane 选中一个点后ctrl I反选其他的点 然后删去 2 e挤出点 3 添加蒙皮skin修改器 4 全选所有点 ctrl a放大或缩小
  • Caffeine缓存不刷新问题

    一 先看问题代码 缓存管理器配置 import java util concurrent TimeUnit import org springframework cache CacheManager import org springfra
  • springboot同一个类里的方法之间调用事务不起作用

    今天在看项目代码的时候 发现在service层 有方法调用同类中的方法 SonarLint提示有bug 下图是我自己做测试时写的demo代码 经过测试发现 当A方法调用同类中带有 Transactional注解的B方法时 被 Transac
  • JVM学习笔记3:内存溢出的十个场景

    内存溢出的十个场景 JVM运行时首先需要类加载器 classLoader 加载所需类的字节码文件 加载完毕交由执行引擎执行 在执行过程中需要一段空间来存储数据 类比CPU与主存 这段内存空间的分配和释放过程正是我们需要关心的运行时数据区 内
  • 常见计算机英语,常见计算机英语词汇

    电脑 又称计算机 是机械的一种 现在使用的越来越多 接下来小编为大家整理了常见计算机英语词汇 希望对你有帮助哦 adder加法器 address地址 access arm磁头臂 存取臂 access time存取时间 alphanumeri
  • Java中的静态成员方法

    用static修饰的变量 方法叫静态成员 方法 属于整个类所有 而不是某个对象所有 即被类的所有对象所共享 静态成员可以使用类名直接访问 也可以使用对象名进行访问 Java中静态方法与非静态方法的区别 首先 两者本质上的区别是 静态方法是在
  • 2021-06-01 通过类去实现装饰器__call__.

    1 含有 init 的类 class MyClass a cherry def init self age sex self age age self sex sex def say self print hello obj MyClass