{t>在创建一个包装好的对象时,{cd1>不创建一个特殊的方法。像方法一样,每个访问都会创建一个新对象,在本例中是一个新的函数对象。在class A:

def __init__(self):

self.data = 'instance'

@combomethod

def foo(param):

if isinstance(param, A):

print("This is an " + param.data + " method.")

elif param is A:

print("This is a class method.")

>>> a = A()

>>> A.foo

>>> a.foo

>>> A.foo()

This is a class method.

>>> a.foo()

This is an instance method.

每次访问都是新的:

^{pr2}$

foo实际上是{}的伪装:>>> A.foo.__code__.co_name

'_wrapper'

当从类调用时,闭包具有obj==None(注意这里的“self”指的是combMethod,它引用了self.method中的原始函数对象):>>> print(*zip(A.foo.__code__.co_freevars, A.foo.__closure__), sep='\n')

('obj', )

('self', )

('objtype', )

当作为实例的属性调用时,obj是实例:>>> print(*zip(a.foo.__code__.co_freevars, a.foo.__closure__), sep='\n')

('obj', )

('self', )

('objtype', )

以下是存储在combomethod中的原始函数:>>> A.foo.__closure__[1].cell_contents.method

>>> A.foo.__closure__[1].cell_contents.method.__code__.co_name

'foo'

_wrapper执行self.method,将类或实例作为给定obj值的第一个参数:if obj is not None:

return self.method(obj, *args, **kwargs)

else:

return self.method(objtype, *args, **kwargs)

python classmethod函数_在python中使用与instance和classmethod相同的函数相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. pandas使用groupby.last函数获取每个组中的最后一个值实战:groupby.last函数获取每个组中的最后一个值、groupby.nth函数获取每个组中的最后一个值

    pandas使用groupby.last函数获取每个组中的最后一个值实战:groupby.last函数获取每个组中的最后一个值.groupby.nth函数获取每个组中的最后一个值 目录

  4. python打印时间_在Python中定义Main函数(第二部分)

    Main函数的最佳实践 既然您已经了解两种执行方式上的差异,那么掌握一些最佳实践方案还是很有用的.它们将适用于编写作为脚本运行的代码或者在另一个模块导入的代码. 如下是四种实践方式: 将大部分代码放入 ...

  5. python什么是高阶函数_说说 Python 中的高阶函数

    高阶函数(higher-order function)指的是:接受一个函数为参数,或者把函数作为结果值返回的函数1. 1 sorted() 比较常见的高阶函数是 sorted(),其内部的关键字参数 ...

  6. format函数python的顺序_[转载] Python中format函数用法

    Python中format函数用法 format优点 format是python2.6新增的格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能 ...

  7. python isalnum函数_探究Python中isalnum()方法的使用

    探究Python中isalnum()方法的使用 isalnum()方法检查判断字符串是否包含字母数字字符. 语法 以下是isalnum()方法的语法: str.isa1num() 参数 NA 返回值 ...

  8. python魔法方法与函数_在Python中画图(基于Jupyter notebook的魔法函数)

    这篇文章主要介绍了在Python中画图(基于Jupyter notebook的魔法函数),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 先展示一段相 ...

  9. python lambda 判断_在Python的Filter中使用lambda函数时,为何达不到预期效果?

    最近我在学习python的时候也遇到了同样的问题,碰巧看到了这个提问,还是挺有缘分的. 先说结论:直接使用lambda表达式时filter(lambdax:x%n>0, it),n会随着代码的运 ...

  10. 怎样使用python画复杂函数_在python中绘制复杂的函数?

    我试图在python中绘制一个带有可变参数的复杂函数,并且发现我无法解释的差异.我的代码如下所示:import matplotlib.pyplot as plt from numpy import p ...

最新文章

  1. mongo报错:not authorized on bb to execute command { create: \“xxx\“...}
  2. move_uploaded_file()
  3. c语言实现堆Stack(附完整源码)
  4. 游戏设计模式实操经验:游戏结算功能实现的两个要点
  5. 数组的几个重要方法以及如何清空数组
  6. python测试开发django-173.bootstrap实现table表格行内编辑
  7. linux 命令缺失安装,Redhat7没有安装ifconfig命令的解决方法
  8. 桌面共享工具(可以实现RTMP直播、K歌、投屏等功能)
  9. 欧冠抽签程序c语言,欧冠抽签
  10. socket工作原理深入分析
  11. 分布式光伏发电系统的组网与研究
  12. Centos7升级OpenSSL 1.0.2k-fips
  13. php 生成文件出错,php生成excel文件打开报错?!!!
  14. com 如何新打开ac
  15. 实验(1)信号的采样
  16. 【三年面试五年模拟】算法工程师的独孤九剑秘籍(前十二式汇总篇)V1版
  17. 怎么把一张普通照片变成证件照?这样做其实非常简单
  18. POS/CPOS基础知识
  19. 一师兄的面试经历:对于销售职位来…
  20. f_GetErrorInfo()获取系统错误信息函数

热门文章

  1. javascript读取用户名和计算机名
  2. 阿里云服务器从购买,备案,安装部署中遇到的一些坑
  3. pcb设计等长线误差_“背锅”盲区,光时域反射仪延长线实际使用测评
  4. python输出玫瑰花_如何用python画玫瑰花
  5. 5.4shell编程3
  6. redux 思考以及源码解析
  7. python学习笔记-Day08--(面向对象)--补充
  8. linux命令收集录
  9. UEditor 1.36 版本 jsp版上传图片自定义路劲配置
  10. ARM S3C2410硬件手册重点