类中三种函数的应用

#!/usr/bin/env python
# -*- coding: utf-8 -*-class TClassStatic(object):def __init__(self, data):self.data = datadef printself(*arg):# for item in arg:# print item.dataprint("printself: ", arg)@staticmethoddef smethod(*arg):print("stattic: ", arg)@classmethoddef cmethod(*arg):print("class: ", arg)def main():obj = TClassStatic(10)obj.printself()obj.smethod()obj.cmethod()if __name__ == "__main__":main()

通过三种函数的调用可以很清楚的看出,各种函数的默认参数,输出结果如下:

('printself: ', (<__main__.TClassStatic object at 0x6ffffe22910>,))
('stattic: ', ())
('class: ', (<class '__main__.TClassStatic'>,))

1、普通函数,默认传入参数self,相当于C++中的this指针。解除printself中的注释,可以输出第一个参数的data就是对象的data(10)。这类函数的定义通常为def printself(self, *args, **kwargs),其特征是第一个参数为self,调用的时候只需传args,kwargs的值,实例对象.方法
2、@staticmethod修饰的函数,相当于C++中的类中静态函数,可以当做全局函数应用,默认不传入参数,调用方法:实例对象或类对象.方法
3、@classmethod修饰的函数,第一个参数cls默认是类名,调用方法:实例对象或类对象.方法

@classmethod与@staticmethod的应用实例

#!/usr/bin/env python
# -*- coding: utf-8 -*-class TClassStatic(object):obj_num = 0def __init__(self, data):self.data = dataTClassStatic.obj_num += 1def printself(self):print("self.data: ", self.data)@staticmethoddef smethod():print("the number of obj is : ", TClassStatic.obj_num)@classmethoddef cmethod(cls):print("cmethod : ", cls.obj_num)cls.smethod()def main():objA = TClassStatic(10)objB = TClassStatic(12)objB.printself()objA.smethod()objB.cmethod()print("------------------------------")TClassStatic.smethod()TClassStatic.cmethod()if __name__ == "__main__":main()

输出结果如下:

('self.data: ', 12)
('the number of obj is : ', 2)
('cmethod : ', 2)
('the number of obj is : ', 2)
------------------------------
('the number of obj is : ', 2)
('cmethod : ', 2)
('the number of obj is : ', 2)

参考

  • python基础—-特性(property)、静态方法(staticmethod)、类方法(classmethod)、str的用法

python中classmethod与staticmethod的差异及应用相关推荐

  1. Python中classmethod与staticmethod区别

    classmethod:类方法 staticmethod:静态方法 在python中,静态方法和类方法都是可以通过类对象和类对象实例访问.但是区别是: @classmethod 是一个函数修饰符,它表 ...

  2. python中classmethod的用法_Python中的@classmethod是如何使用的?

    在写Python程序的时候,特别是实现类方法的时候,通常会用到@staticmethod和@classmethod两种装饰器(function decorator),那这两个装饰器有什么作用呢?在这篇 ...

  3. python的@classmethod和@staticmethod

    本文是对StackOverflow上的一篇高赞回答的不完全翻译,原文链接:meaning-of-classmethod-and-staticmethod-for-beginner Python面向对象 ...

  4. python中的连续比较是什么_在python中提取连续行之间的差异

    你的例子表明你想要在一对线之间进行比较.这与将其定义为line(n-1)-line(n)不同,后者将给出5个结果,而不是3个.在 结果也取决于你认为的差异.它是位置性的,还是仅仅基于奇数行中缺失的字母 ...

  5. Python中的类、实例以及方法,MRO继承解析顺序以及Mixin类

    Contents 1. 什么是类和实例 2. 类的实例方法.类方法和静态方法 3. MRO是什么,描述其查找顺序 4. Mixin是什么,描述其应用场景 5. References 1. 什么是类和实 ...

  6. python中创建对象后可以使用运算符来调用其成员_《守株待兔》这则寓言告诉我们(...

    [简答题]简述质谱技术的原理及组成. (10.0分) [简答题]语句: >>>f=open('myfile.txt','a+') >>> f.write('hehe ...

  7. Python中抽象类和接口的区别

    Python中的抽象类和接口有什么区别? #1楼 用更基本的方式来解释:界面有点像空的松饼盘. 它是一个包含一组没有代码的方法定义的类文件. 抽象类是相同的,但并非所有函数都需要为空. 有些人可以有代 ...

  8. python中@staticmethod、@classmethod和实例方法

    1.形式上的异同点: 在形式上,Python中:实例方法必须有self,类方法用@classmethod装饰必须有cls,静态方法用@staticmethod装饰不必加cls或self,如下代码所示: ...

  9. python中静态变量和静态方法_【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)...

    在java.c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢. python提供了@classmethod和@staticmethod来定义 ...

最新文章

  1. 我一不小心把ubuntu里的ps这样的命令删掉了,应该怎么重装呢
  2. addcontorl error...viewstate relative
  3. iol植入手术过程_Phaco+IOL植入术病人的护理
  4. 将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3
  5. 【Tools】VNC Server 6.7安装详解
  6. react在组件内插入标签_javascript – 如何将css类添加到react中的组件?
  7. python 闭包和装饰器
  8. tab+easyui datagrid无法正常显示
  9. 下载和安装MyEclipse2014
  10. 一、用例图、功能模块图、ER图之间的区别和联系
  11. [Unity]Unity3D游戏引擎游戏开发软件相比与其他的优势
  12. 开机时小键盘灯不亮的解决方案
  13. 解密邮件群发小技巧?邮件群发单显功能如何设置?
  14. Python---面向对象---龟鱼游戏
  15. BANANA PI 入门:香蕉派如何安装系统
  16. JAVA接口签名sign生成工具类
  17. MATLAB连接USRP
  18. 数据预处理概述和数据清洗
  19. Genbank的gbff格式转gff3格式
  20. M1 MacBook 续航太好,苹果以为电量指示器坏了

热门文章

  1. 砥志研思SVM(四) 序列最小最优化算法(SMO)论文翻译
  2. [java基础] --- java开发,service层是不是一定要写接口
  3. 强制消除Xcode警告的方法
  4. java 常量表达式_JavaSwitch语句:常量表达式是必需的,但它是常量
  5. 五大质量工具详解及运用案例_掌握质量管理五大工具,实现九段质量管理成长...
  6. android 将布局多次添加,android – 如何在布局xml中添加循环视图
  7. 奥的斯电梯tt服务器使用表_奥的斯电梯服务器TT使用说明1
  8. IOC操作Bean管理注解方式(组件扫描配置)
  9. centos6安装mysql并远程连接_MySQL5.7数据库安装与远程连接
  10. ug使用服务器系统,ug服务器设置教程视频