python 修饰器 参数_具有参数的Python类修饰器,但未运行修饰的...

我已经大部分工作了.我想要一个类装饰器(Decorator类),该装饰器接受可用于将方法包装在对象(Person的实例)上的参数(问候和告别).

一切正常,除了…永远不会运行Person类上的原始命令功能!如果我使用类似的方法手动调用该函数

output = getattr(instance, func.func_name)(command, *args, **kwargs)

我得到无限递归.

我该怎么做呢?完整的代码如下:

import functools

class Decorator(object):

def __init__(self, greeting, farewell, *args, **kwargs):

print "initing"

self.greeting = greeting

self.farewell = farewell

def __call__(self, func, *args, **kwargs):

print "CALLING"

@functools.wraps(func)

def wrapper(instance, command, *args, **kwargs):

return "%s, %s! %s!

%s, %s!" % (

self.greeting,

instance.name,

command,

self.farewell,

instance.name

)

return wrapper

class Person(object):

def __init__(self, name):

self.name = name

@Decorator("Hello", "Goodbye")

def command(self, data):

return data + "LIKE A BOSS"

s = Person("Bob")

print s.command("eat food")

实际输出:

initing

CALLING

Hello, Bob! eat food!

Goodbye, Bob!

预期产量:

initing

CALLING

Hello, Bob! eat food LIKE A BOSS!

Goodbye, Bob!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode笔记】剑指 Offer 57-. 和为s的两个数字 (Java、对撞双指针)

文章目录题目描述思路 & 代码二刷题目描述 很好的一道思路题,可以用来理解状态、双指针。注意:数组有序,否则需要用哈希表来做。 思路 & 代码 双指针:从头、尾往里走,重点在于为何不会丢失解状态 S(x, y)&…

python tkinter画笑脸_Python3 tkinter基础 Canvas create_polygon 画三角形

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code """ Author : 行初心 Date : 18-9-30 Blog : www.cnblogs.com/xingchuxin GitHub : github.com/GratefulHeartCoder """ fr…

【LeetCode笔记】剑指 Offer 57- II. 和为 s 的连续正数序列(Java、滑动窗口、二刷)

文章目录题目描述思路 & 代码二刷题目描述 花了不少时间来优化 ,很好的一道用来理解滑动窗口的题~ 思路 & 代码 要点:为了 O(n) 复杂度,左右边界都只能往右走滑动窗口:存储当前连续正数序列 class Soluti…

设计一个类代表二维空间的一个圆。_平面设计基础——点、线、面

平面构成是以研究造型要素及构成规律为内容,讲点、线、面和基本形等视觉要素进行合理的排版合成在一个二维的平面上的艺术表现形式。平面构成是一种视觉形象的二维构成,主要是视觉的二维空间。平面构成他通过对造型要素的理性分析和严格的形式构成训练来…

【LeetCode笔记】剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(Java、二叉树、dfs)

文章目录思路 & 代码代码 & 思路二刷思路 & 代码 应该在二叉树的最近公共祖先之前写 需要用到二叉搜索树的特性~ 代码 & 思路 分成四种情况即可,具体见代码注释时间复杂度 O(logn) /*** Definition for a binary tree node.* publ…

python类属性和实例属性_Python 类属性与实例属性,类对象与实例对象用法分析...

本文实例讲述了Python 类属性与实例属性,类对象与实例对象用法。分享给大家供大家参考,具体如下:demo.py(类属性,所有实例对象共用类属性): # 定义工具类 继承object是为了兼容python2.x class …

【LeetCode笔记】剑指 Offer 65. 不用加减乘除做加法(Java、位运算、二刷)

文章目录题目描述思路 & 代码二刷题目描述 讲道理,感觉算有点难度的题目了 ,还是需要时不时看看。 思路 & 代码 正负数情况可以不考虑(补码)核心:加法 进位和 非进位和关于位运算符的选择,le…

【LeetCode笔记】剑指 Offer 62. 圆圈中最后剩下的数字(Java、约瑟夫环、链表)

文章目录题目描述思路 & 代码链表模拟法数学方法二刷题目描述 约瑟夫环!题目可太经典了说实话还是有点难度的 思路 & 代码 链表模拟法 第一想法是用 LinkedList,但是会超时,于是选择ArrayList关键在于 index (index m - 1) %…

【学习笔记】《Go 指南》

学习笔记 —— Go 指南 前言:先贴上网址,因为是先用 Typora 写,然后直接导入的,所以格式多多少少有点问题 文章目录学习笔记 —— Go 指南一. 包、变量和函数二. 流程控制语句 for、switch、if 和 defer三. 更多类型 struct、sli…

python怎么画参数函数图像_详解pandas.DataFrame.plot() 画图函数

首先看官网的DataFrame.plot( )函数 DataFrame.plot(xNone, yNone, kindline, axNone, subplotsFalse, sharexNone, shareyFalse, layoutNone,figsizeNone, use_indexTrue, titleNone, gridNone, legendTrue, styleNone, logxFalse, logyFalse, loglogFalse, xticksNone, ytick…

【学习笔记】第一章——操作系统的概念、功能、特征、发展分类(系统调用、并发共享虚拟异步)

文章目录一. 概念、功能与目标定义:功能1. 系统资源的管理者2. 用户和计算机硬件之间的接口3. 最接近硬件的层次二. 特征1. 并发2. 共享3. 虚拟4. 异步三. 发展分类1. 手工操作阶段2. 单道批处理系统3. 多道批处理系统4. 分时操作系统5. 实时操作系统总结一. 概念、…

【学习笔记】第一章——操作系统的运行机制、体系结构和内核(核心态、原语、大内核 微内核、特权指令)

文章目录总览一. 运行机制:1. 指令2. 处理器状态3. 程序二. 内核1. 定义2. 在层次结构中的划分三. 体系结构总览 重要知识点:特权指令 & 内核程序,只能在核心态执行 一. 运行机制: 1. 指令 指令:CPU 能识别、…

计算机视觉中的多视图几何_基于深度学习的视觉三维重建研究总结

三维重建意义三维重建作为环境感知的关键技术之一,可用于自动驾驶、虚拟现实、运动目标监测、行为分析、安防监控和重点人群监护等。现在每个人都在研究识别,但识别只是计算机视觉的一部分。真正意义上的计算机视觉要超越识别,感知三维环境。…

python列表添加字符串_2.python基础之—列表,元组,字典,集合,字符串的使用方法...

一.关于python序列的简介。 python里面的序列大部分都可以执行,索引,切片,加,乘,检查长度,以及检查某个成员是否存在,甚至还可以找出这个序列中最小的元素和最大的元素,并且序列都是…

【学习笔记】第一章——操作系统的中断和异常

文章目录总览一. 诞生、概念和作用二. 分类三. 外中断的处理过程四. 导图总结总览 异常:内中断 一. 诞生、概念和作用 早期计算机,程序只能串行执行,资源利用率低(详可见OS 发展分类),为了解决这一问题…

python列表添加元素到中间_python在列表的元素中间插入空行

我写了一个手动输入后收集专辑信息的程序,写的很繁杂......是定义了一个可以将实参整理入字典的函数,再将字典放入列表 album_list [] def album(name, singer, quantities_of_songs): """record the info of a album"""…

【学习笔记】第一章——操作系统的系统调用(陷入指令、库函数、作用流程)

文章目录总览一. 定义与作用定义作用分类二. 系统调用和库函数的区别三. 系统调用背后的过程导图总结总览 面试常考题了,可得好好看看 XD 一. 定义与作用 定义 作用 结合下图例子理解按照我的理解,就是需要调用系统资源时,需要让 OS 来保…

【学习笔记】第二章——进程的定义、组成、组织方式、特征、状态 转换

文章目录1. 定义 & 组成2. 进程的组织3. 特征1、2、3 总结导图4. 状态5. 转换4、5 总结导图1. 定义 & 组成 一般直接把进程实体称为进程,但是严格来说进程实体强调静态,而进程强调动态。PCB(Process Control Block)是进程…

python 列表比较不同_使用Python中的自定义比较功能对列表进行排序

由于OP要求使用自定义比较功能(这也是导致我提出这个问题的原因),因此我想在这里给出可靠的答案: 通常,您要使用内置的return fitness(item2) - fitness(item1)函数,该函数将自定义比较器作为其参数。 我们…

【学习笔记】GIT使用

文章目录正文git 流程:正常:查看:回滚删除:远程:分支:底层:学习网站:廖雪峰git教程 ,笔记不断更新中~ 正文 git 流程: 正常: 项目目录下 git i…