y是一个包装函数的修饰器,您可以在类或(等效)其实例上调用生成的对象:

>>> class x(object):

... def c1(*args): print 'c1', args

... c1 = classmethod(c1)

... @classmethod

... def c2(*args): print 'c2', args

...

>>> inst = x()

>>> x.c1()

c1 (,)

>>> x.c2()

c2 (,)

>>> inst.c1()

c1 (,)

>>> inst.c2()

c2 (,)

如您所见,无论是直接定义它还是使用装饰器语法定义它,以及在类或实例上调用它,y始终将类作为其第一个参数。

classmethod的主要用途之一是定义替代构造函数:

>>> class y(object):

... def __init__(self, astring):

... self.s = astring

... @classmethod

... def fromlist(cls, alist):

... x = cls('')

... x.s = ','.join(str(s) for s in alist)

... return x

... def __repr__(self):

... return 'y(%r)' % self.s

...

>>> y1 = y('xx')

>>> y1

y('xx')

>>> y2 = y.fromlist(range(3))

>>> y2

y('0,1,2')

现在,如果您将y子类化,则该类方法将继续工作,例如:

>>> class k(y):

... def __repr__(self):

... return 'k(%r)' % self.s.upper()

...

>>> k1 = k.fromlist(['za','bu'])

>>> k1

k('ZA,BU')

python中class什么意思_python-classmethod在此代码中做什么?相关推荐

  1. 基于python的九轴惯性传感器的数据预处理代码-中值滤波实验

    ** 基于python的九轴惯性传感器的数据预处理代码-中值滤波实验 ** import random import numpy as np import pandas as pd import sc ...

  2. python可以开多少线程_Python开启线程,在函数中开线程的实例

    逻辑处理上分成了多个模块,为了提高效率,前一个模块处理完调用后一个模块操作时使用多线程 我这里遇到的情形是前面取数据后面存到mysql,发现单线程效率很低,改为取数据后开线程存到mysql 开启线程之 ...

  3. python资源管理器选择文件_Python:在资源管理器中获取选定文件的列表(windows7)...

    我知道现在在这里发布答案有点晚了,但我几个月前尝试过Olav的解决方案,但它没有完全起作用:工作目录是脚本的工作目录,所以我不得不删除if条件才能使其工作,但它选择了所有Windows资源管理器窗口中 ...

  4. python中formatter的用法_Python pyplot.FuncFormatter方法代码示例

    本文整理汇总了Python中matplotlib.pyplot.FuncFormatter方法的典型用法代码示例.如果您正苦于以下问题:Python pyplot.FuncFormatter方法的具体 ...

  5. python中font的用法_Python font.nametofont方法代码示例

    本文整理汇总了Python中tkinter.font.nametofont方法的典型用法代码示例.如果您正苦于以下问题:Python font.nametofont方法的具体用法?Python fon ...

  6. python tkinter 窗口禁止编辑_python tkinter禁用文本窗口中的换行

    在下面的代码中,我正在寻找一种方法来禁用文本小部件中的换行符.我只需要使用一个条目小部件,但是条目没有撤销功能.在 当我在文本小部件中按enter键时,parse函数会根据需要调用,但它也会转到下一行 ...

  7. python使用mysql实例教程_Python操作Mysql实例代码教程在线版(查询手册)_python

    实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...

  8. 如何在代码中让按钮高亮_如何在C代码中插入移位寄存器

    上期内容:AI Engine到底是什么? 众所周知,标准C或C++代码是没有HDL代码的并行性和时序性的,那么如何在C代码中插入寄存器呢?Vivado HLS提供了IP库,这些IP库使得HLS可直接从 ...

  9. java中getup用法_你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!

    前言 what?你的 Java 代码中还充斥着大量的 set/get 方法? 我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态.在 Java 中,要保证封装性,需要 ...

  10. C语言系列(二):最近重拾C语言的想法,谈到C中易错点,难点;以及开源代码中C语言的一些常用技巧,以及如何利用define、typedef、const等写健壮的C程序...

    写在前面的话:本系列主要是自己在c语言运用时,对一些不了解,但开源代码中常用的技巧,和一些c语言中偏门和易错点进行解析. 加入了自己的分析,如果不到位请多海涵,另外,引用一些非常好的文章(都有引用li ...

最新文章

  1. LeetCode简单题之二分查找
  2. Micropython开发实例之TPYBoard v702GPRS功能测试
  3. jQuery下的ajax【5分钟掌握】
  4. Wireshark介绍 与 过滤器表达式语法
  5. python selenium 小知识点整理笔记(更新中...)
  6. 均匀三次b样条曲线_西门子数控曲线加工进给速度优化指令
  7. django-celery beat报错 error pid
  8. 输出100之间的所有质数(素数)
  9. PDF 报告生成器:用 reportlab 和 pdfrw 生成自定义 PDF 报告
  10. 常见数学公式和符号的英文读法大全
  11. C# 匿名函数_C# 匿名函数使用整理
  12. 第22节 NAT(网络地址转换)—实现公网IP和私网IP之间的转换
  13. java field 字段类型_Java Field类
  14. 芯片行业相关公司及就业岗位汇总
  15. 设计adm和CPU计算机组装方案,成熟的解决方案:CPU风扇(AMD和INTEL)的详细拆卸和安装方法(图形教程)...
  16. linux系统获取root权限,linux怎么进入root权限
  17. JS下载文件|无刷新下载文件
  18. 关于C语言的优秀文章
  19. win7计算机文件夹选项在哪里,Win7文件夹选项不见了怎么办?
  20. Scala核心编程 第六章—Scala面向对象编程(一)

热门文章

  1. 微信公众号分享给微信好友和朋友圈
  2. SQL Server修改密码
  3. gis计算频数_matlab简单区间列频数统计输出
  4. SAP 各大常用模块汇总介绍(一)
  5. cufflinks 绘图
  6. python实现视频音频同步
  7. 机器学习中的聚类算法有哪几种?
  8. JS 遍历对象 jQuery遍历对象
  9. 《凤凰项目:一个IT运维的传奇故事》笔记
  10. Python的学习(二十一)----Python的静态变量